~阿弥陀佛~

人生能有多少天是按照自己的想法去活着

Relational database 和 NoSQL科普

关系型数据库

关系型数据库是把复杂的数据关系归结为简单的二维表格关系,在关系型数据库中对数据的操作几乎都建立在一个或多个关系表格上,通过对这些关联的表格分类,合并或选取等运算来实现数据的管理。

特点:用类似于excel表格来展示,使用SQL结构化查询语言来对数据进行存取

常见的关系型数据库: MySQL  Oracle

1.  MySql

Mysql是中小型关系型数据库管理系统,应用范围包括:互联网领域,大中小型网站,游戏公司,电商平台等。Mysql目前已被Oracle收购,有闭源风险。

2.  MariaDB

Mysql的一个分支,与Mysql是同一个创始人。女儿叫Maria,由开源社区维护。 开发MariaDB的目的是完全兼容Mysql,包括API和命令行,使之能轻松的成为Mysql的替代品。

Mysql不同的是:MariaDB存储引擎为XtraDB替换MYsqlInnoDB, 基于事务的Maria存储引擎替换mysqlMyISAM

3. SqlServer

Microsoft SQL Server是微软开发大大型关系型数据库系统,功能全面,效率高。不论是C/S(客户机/服务器)还是B/S(浏览器/服务器)架构,SQLserver的处理效率都很高。但是只能在windows系统下运行

4.  Access

微软推出的微机数据库管理系统,易学易用,开发简单,是典型的新一代桌面关系型数据管理系统,入门级小型桌面数据库,性能安全性一般,可供个人管理和小型网站用。

5. 其他不常用关系型数据库

DB2PostgreSQLInformixSybase等。

 

 

 

 

 

非关系型数据库

非关系型数据库也叫做NoSQLnot only SQL)数据库,NoSQL是关系型数据库的补充,NoSQL在特殊场景下可以发挥出更高的效率和性能(比如互联网web2.0,传统的关系型数据库在应对规模越来越大的数据和超大规模的高并发,SNS类型的web2.0纯动态网站时显得吃力,因为传统的关系型数据库有IO瓶颈)

NoSQL数据库不需要固定的表结构,也不存在连接操作,在大数据存取上具有关系型数据库无法比拟的性能优势

商业NoSQL:   GoogleBitTable

              AmazonDynamo

开源NoSQLFacebook Cassandra  

             Apache:  HBase

             还有Redis mongodb memcached memcachedb TokyoTyrant Couchdb

1. Memcached

开源,高性能,具有分布式内存对象的缓存系统,可以减轻数据库负载,加速动态的web应用,主要用于高负载高并发架构。缓存通常用来保存一些经常被存取的对象或数据。 Memcached是一种纯内存缓存系统,把经常存取的数据缓存在内存当中,而这些缓存的数据被程序通过API的方式存取,memcached里的数据就像一张大的HASH表,数据以key-value对的方式存在

一旦重启数据就会丢失。新浪开发了一个memcachedb通过memcached增加Berkeley DB的持久化存储机制和异步主辅复制机制,使其具有了事务恢复能力,持久化数据存储能力和分布式复制能力,memcachedb非常适合需要超高性能读写速率,持久化保存的应用场景,后来逐渐被redis替代

 

2. Ridiskey-value

memcached类似是一个key-value型存储系统,但是支持的value类型相对较多,包括string(字符串),list(链表),set(集合)和zset(有序集合)等,这些数据类型都支持push/pop,add/remove以及取交集、并集和差集等,这些操作都是原子性的,在此基础上,redis支持各种不同方式的排序。

redis数据也是缓存在内存中的但是会周期性的将数据写入磁盘或者把修改操作写入追加的记录文件,并在此基础上实现了master-slave主从同步

该数据库很大程度的补充了memcached这类key-value存储的不足,同时也提供了pythonRubyErlangPHP客户端。

特点:  支持内存缓存,持久化,key-value库功能丰富,支持集群分布式,支持队列等。

 

 

3. MongoDBDocument-oriented

是介于关系型和非关系型数据库之间的产品,是非关系型数据库中功能最丰富,最像关系型数据库的。支持的数据结构非常松散,类似于jsonbjson格式,因此可以存储比较复杂的数据类型,同时支持的查询语言非常强大,语法类似于面向对象的查询语言,几乎可以实现类似于关系数据库单表查询的绝大部分功能,并且支持对数据建立索引。

特点:高性能,易部署,简单易用,存储数据库方便。

      面向集合存储,易存储对象类型的数据(Collenction-Orented是数据被分组存储在集合中,每个集合都有唯一标识名称,并且可以包含无限数目的文档,集合概念类似于关系型数据库(RDBMS)里的table,不同的是它不需要定义任何模式)

      模式自由,即对存取在mougodb数据库中的文件,不需要知道它的任何结构定义,如果需要,完全可以把不同结构的文件存取在同一个数据库中。

      支持动态查询。

      支持完全索引,包含内部对象

      支持复制和故障恢复

      使用高效的二进制存储数据,包括大型对象比如视频等

      自动处理碎片,以支持云计算层次的扩展性

      支持RUBYPYTHONJAVAC++PHP等多种语言

      文件存储格式为BSONJSON的扩展)

BSONBinary serialized document Format)存储形式是指:存储在集合中的文档,被存储为键值对的形式,键用于唯一表示一个文档,为字符串类型,而值则可以使各种复杂的文件类型

      可通过网络访问

      可运行在LinuxwindowsOS X平台,支持32位和64位应用,默认端口为27017

mongodb将数据存储在文件中,为提高效率使用内存映射文件进行管理

 

 

4. CassandraColumn-oriented

  Apache Cassandra是开源分布式key-value存储系统,最初由Facebook开发,用于存储特别大的数据。

 特点:分布式,基于column结构化,高伸展性、

Cassandra严格说并不是一个数据库,而是有一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,读操作也会被路由到某个节点去读取,对于Cassandra集群来说扩展比较容易,

 

 

Next Post

Previous Post

© 2021 ~阿弥陀佛~

ICP备案号: 京ICP备19038630号

版权所有@ 王力翔

耗时 0.194 秒 | 查询 40 次 | 内存 22.44 MB