NOSQ概念:
nosql:not only sql.对不同于传统的关系型数据库系统的统称
两者存在许多显著的不同点,其中最重要的是Nosql不使用sql作为查询语言。其数据存储可以不需要固定的表格模式,也经常会避免使用sql的JOIN操作,一般有水平可扩展性的特征。
特征:
NOsql的实现具有二个特征: 使用硬盘,或者把随机存储器作存储载体。
Nosql的结构通常提供弱一致性的保证,如最终一致性,或交易仅限于单个的数据项。
不过,有些系统,提供完整的ACID保证在某些情况下,增加了补充中间件层(例如,CloudTPS)。有两个成熟的系统有提供快照隔离的列存储:像是Google基于过滤器系统的BigTable,和滑铁卢大学发展的HBase。这些系统,使用类似的概念来实现多行(multi-row)分散式ACID交易的快照隔离(snapshot isolation)保证为基础列储存,无需额外的资料管理开销,中间件系统部署或维护介绍了中间件层。少数Nosql系统部署了分布式结构,通常使用分散式杂凑表(DHT)将数据以冗余方式保存在多台服务器上。依此,扩充系统时候添加服务器更容易,并且扩大了对服务器失效的承受能程度。
分类:
按照数据模型保存性质将当前Nosql分为四种:
1.Key-value stores键值存储,保存keys+BLOBs (二进制大对象Binary Large OBjects)2.Table-oriented 面向表,主要有Google的BigTable和Cassandra.
3.Document-oriented面向文本, 文本是一种类似XML文档,MongoDB 和 CouchDB
4.Graph-oriented 面向图论. 如Neo4J.
键-值(key‐value)储存
最终一致性的键-值储存
- Cassandra
- Dynamo
- Hibari
- Project Voldemort
- Riak
架构性键-值储存GT.M
- InterSystem Globals
主机式服务
Key/value 硬盘存储
- BigTable
- MemcacheDB
- LevelDB
Memcachedb 可以结合关系数据库一起提供。这需要对数据库的设计进行优化
- Tokyo Cabinet
- Tuple space
- TreapDB
Key/value RAM存储
- Oracle Coherence
- memcached
- Citrusleaf database
- Velocity
- Redis
- Tuple space
Key-value 基于Paxos算法的存储
- Keyspace
多数据库
- OpenQM
- Rocket U2
- Revelation Software'sOpenInsight
- Extensible Storage Engine(ESE/NT)
对象数据库
Versant Object Database
- db4o
- iBoxDB
- GemStone/S
- InterSystems Caché
- JADE
- Objectivity/DB
- ZODB
- ObjectStore
列存储
- Cassandra
- HBase
- Hypertable
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。[3]
是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。[3]