Michael Stonebraker是数据库领域的布道者。他对此领域了解很深,并帮助开发了一些最流行的数据库系统,包括Postgres、Ingres和Vertica。StoneBraker近来提出NoSQL会被广泛接受。
NoSQL通常具有如下优势:
- 性能、扩展性更好
- 无模式或模式灵活
- 无共享架构
- 异步
本文罗列了一些知名的NoSQL数据库,希望能帮助开发者更好地选用NoSQL数据库。
文档、键值类数据库
- MongoDB:开源、面向文档,目前使用最广泛。
- CounchDB:Apache旗下,基于Erlang的文档数据库。也非常流行,npm即使用CouchDB。
- Couchbase:原名Membase,专注于交互类应用。
- Riak:分布式键值数据库,支持数据复制和容错。
- Redis:键值存储。支持主从式复制、事务、Pub/Sub、Lua脚本,常用于
- Dynamo:Amazonn S3中使用。
- Oracle NoSQL Database: Oracle旗下,支持事务ACID和JSON。
- Aerospike:支持混合内存架构,通过强一致性和可调一致性保证数据的完整性。
- Voldemort 支持备份的键值存储。
- RavenDB: 基于.Net平台。兼容DDD.
- MarkLogic 基于XML的存储架构。
大文件存储数据库
- Cassandra:同样是Apache旗下。分布式、容错、弹性。
- HBase:Google的Bigtable的开源实现,基于Hadoop和HDFS。
- Apache Accumulo:Apache旗下又一款数据库。同样参考Google的BigTable设计,基于Apache Hadoop、Zookeeper和Thrift。
- Hypertable:另一个Bigtable实现,支持分片。
- Amazon SimpleDB:Amazon旗下。可以在AWS中使用。
- Azure Tables:MicroSoft旗下。可以通过Windows Azure云服务使用。
Graph数据库
- Neo4j:基于Java,支持ACID,可嵌入。
- InfiniteGraph:优势在于遍历对象间的复杂关系,支持分布式数据存储。
- AllegroGraph:基于内存,十分高效,并结合了磁盘存储,提供了高可扩展性,支持SPARQ、RDFS++和Prolog。
- OrientDB: 基于Java编写,其实也可以算作文档型数据库,但是记录之间的关系管理采用graph数据库的方式。支持全模式、混合模式和无模式。
- FlockDB: 开源、分布式,适合广而浅的网络。最初Twitter使用这个存储用户间的关系。和其他graph数据库不同,设计时针对的不是遍历,而是快速的集合操作。
编撰 SegmentFault