SQL数据库的终结(第二篇)?
[原文链接]
在 “SQL数据库的终结? (第一篇/共三篇)” 里我简要介绍了一下关于SQL语言和关系型数据库的背景知识,包括它的过去和将来,介绍了一些以隐藏数据库编程的复杂度为目的模式框架的流行和NoSQL数据库的兴起。在本文的第二篇里,我将介绍一些现有的开源的或非开源的NoSQL数据库。之后,在第三篇里,我将引导你去发现网上的关于NoSQL的资料,告诉你一些跟NoSQL相关的已经发生的和即将发生的一些事件,给软件开发者提供一些这方面的指导。
你想象不到,如今竟然有了那么多开源的/非开源的NoSQL数据库产品。而同时,每天都有新的品种出现。如果我的列举中遗漏了你喜爱的NoSQL数据库,请发评论告诉我。下面你将看到的就是各种不同类型的NoSQL数据库产品:面向文档的,面向集合的,面向列的,面向对象的,面向图的,面向有序集合的,面向行的,等等。
AllegroGraph | |
---|---|
公司/组织: | Franz Inc. |
类型: | Graph |
简介: | Modern, high performance, persistent graph database. |
存储方案: | Disk based, meta-data and data triples. |
API(s): | SPARQL, Prolog |
BerkleyDB | |
公司/组织: | Oracle |
类型: | Key/Value |
简介: | C language embeddable library for enterprise-grade, concurrent, transactional storage services. Thread safe to avoid data corruption or loss |
存储方案: | B-tree, hash table, persistent queue |
API(s): | C, C++ and Java |
备注: | Use BerkleyDB XML layer on top of BerkleyDB for XML based applications. Comparison of BerkleyDB and relational databases |
BigTable | |
公司/组织: | |
类型: | Sparse, distributed, persistent multidimensional sorted map. |
简介: | Distributed storage system for structured data. Data model provides dynamic control over data layout and format. Data can live in memory or on disk. |
存储方案: | Data is stored as an uninterpreted array of bytes. Client applications can create structured and semi-structured data inside the byte arrays. |
API(s): | Python, GQL, Sawzall API, REST, various. |
备注: | Overview: Bigtable: A Distributed Storage System for Structured Data (PDF format) |
Cassandra | |
公司/组织: | Apache |
类型: | Dimensional hash table |
简介: | Highly scalable distributed database. Combines Dynamo’s distributed design and Bigtable’s column family data model. |
存储方案: | Clusters of multiple keyspaces. The keyspace is a name space for column families. Columns are comprised of a name, value and timestamp. |
API(s): | Java, Ruby, perl, Python, C#, Thrift framework. |
备注: | Open sourced by Facebook in 2008. Wiki, FAQ, Examples |
CouchDB | |
公司/组织: | Apache |
类型: | Document |
简介: | Distributed database with incremental replication, bi-directional conflict detection and management. |
存储方案: | Ad-hoc and schema-free with a flat address space. |
API(s): | RESTful JSON API. JavaScript query language. |
备注: | CouchDB Introduction, Technical Overview |
db4o | |
公司/组织: | Versant |
类型: | Object |
简介: | Java and .NET dual license (commercial and open source) object database. |
存储方案: | Data objects are stored in the way they are defined in the application. |
API(s): | Java, .NET languages. |
备注: | db4o db4o database runtime engine, about db4o |
Dovetaildb | |
公司/组织: | Millstone Creative Works |
类型: | JSON-based |
简介: | Schemaless database similar to Amazon’s SimpleDB. Open source, standalone Java application server. |
存储方案: | JSON data format, “bags” (similar to tables). |
API(s): | HTTP and Javascript APIs |
备注: | Dovetaildb JavaScript API reference manual |
Dynomite | |
公司/组织: | Cliff Moon |
类型: | Key/Value |
简介: | Open source Amazon Dynamo clone written in Erlang. |
存储方案: | Distributed key/valve store, Pluggable storage engines. |
API(s): | Thrift API |
备注: | Dynomite Wiki |
eXtreme
| |
公司/组织: | IBM |
类型: | In-memory grid/cache |
简介: | Distributed cache processes, partitions, replicates and manages data across servers. |
存储方案: | Data and database cache, “near cache” for local subset of data. Java persistent cache. Map reduce support. |
API(s): | Java APIs, REST data service |
备注: | eXtreme Scale Document library web site |
GT.M | |
公司/组织: | FIS |
类型: | Hierarchical, multi-dimensional sparse arrays, content associative memory |
简介: | Small footprint, multi-dimensional array with fill support for ACID transactions, optimistic concurrency and software transactional memory. |
存储方案: | Unstructured array of bytes. Can be Key/Value, document oriented, schema-less, dictionary or any other data model. |
API(s): | Mumps, C/C++, SQL |
备注: | GT.M FAQ |
hamsterDB | |
公司/组织: | Christoph Rupp |
类型: | Embedded storage library |
简介: | Lightweight embedded database engine. Supports on disk and in memory databases. |
存储方案: | B+tree with variable length keys. |
API(s): | C++, Python, .NET and Java |
备注: | hamsterdb FAQ, examples, tutorial |
HBase | |
公司/组织: | Apache |
类型: | Sparse, distributed, persistent multidimensional sorted map. |
简介: | Open source, distributed, column-oriented, “Bigtable like” store |
存储方案: | Data row has a sortable row key and an arbitrary number of columns, each containing arrays of bytes. |
API(s): | Java API, Thrift API, RESTful API |
备注: | Part of Apache Hadoop project. HBase Wiki, FAQ |
Hypertable | |
公司/组织: | Zvents Inc. |
类型: | Sparse, distributed, persistent multidimensional sorted map. |
简介: | High performance distributed data storage system designed to run on distributed filesystems (but can run on local filesystems). Modeled after Google Bigtable. |
存储方案: | Row key (primary key), column family, column qualifier, time stamp. |
API(s): | C++, Thrift API, HQL |
备注: | Hypertable Architectural overview, FAQ |
Infinispan | |
公司/组织: | JBoss Community |
类型: | Grid/Cache |
简介: | Scalable, highly available, peer to peer, data grid platform. |
存储方案: | Key/Value pair with optional expiration lifespan. |
API(s): | Java, PHP, Python, Ruby, C |
备注: | Infinispan FAQ, Wiki |
InfoGrid | |
公司/组织: | |
类型: | Graph |
简介: | Internet graph database made up on nodes and edges. Supports in-memory and persistent storage alternatives including RDBMS, file system, file grid, and custom storage. |
存储方案: | Nodes (meshobjects) and edges (relationships). Meshobjects can have entity types, properties and participage in relationships. MeshObjects raise events. |
API(s): | RESTful web services. |
备注: | InfoGrid Overview, FAQ |
Keyspace | |
公司/组织: | Scalien |
类型: | Key/Value |
简介: | Distributed (master/slave) key-value data store delivering strong consistency, fault-tolerance and high availability. |
存储方案: | Uses BErkeleyDB library for For local storage. Key/Value pairs and their state are replicated to multiple servers. |
API(s): | C/C++, Python, PHP, HTTP |
备注: | Keyspace Overview, FAQ |
MemcachedDB | |
公司/组织: | |
类型: | Key/Value |
简介: | High performance, high realiability persistent storage engine for key/value object storage. |
存储方案: | Uses BerkeleyDB as storage library/backend. |
API(s): | Memcache protocol, C, Python, Java, perl |
备注: | MemcacheDB complete guide (PDF format) |
Mnesia | |
公司/组织: | Ericsson |
类型: | Key/Value |
简介: | Multiuser distributed database including support for replication and dynamic reconfiguration. |
存储方案: | Organized as a set of tables made up of Erlang records. Tables also have properties including type location, persistence, etc. |
API(s): | Erlang |
备注: | Mnesia Reference manual |
MongoDB | |
公司/组织: | 10gen |
类型: | Document |
简介: | Scalable, high-performance, open source, schema-free, document-oriented database |
存储方案: | JSON-like data schemas, Dynamic queries, Indexing, replication, MapReduc |
API(s): | C,C++, Java, JavaScript, perl, PHP, Python, Ruby, C#, Erlang, Go, Groovy, Haskell, Scala, F# |
备注: | MongoDB Documentation Index |
Neo4J | |
公司/组织: | Neo Technology |
类型: | Graph |
简介: | Embedded, small footprint, disk based, transactional graph database written in Java. Dual license – free and commercial. |
存储方案: | Graph-oriented data model with nodes, relationships and properties. |
API(s): | Java, Python, Ruby, Scala, Groovy, PHP, RESTful API. |
备注: | Neo4J Wiki, API, FAQ |
Redis | |
公司/组织: | |
类型: | Key/Value |
简介: | Key/Value store with the dataset kept in memory and saved to disk asynchronously. “not just another key-value DB” |
存储方案: | Values can be strings, lists sets and sorted sets. |
API(s): | Python, Ruby, PHP, Erlang, Lua, C, C#, Java, Scala, perl |
备注: | Redis Wiki |
SimpleDB | |
公司/组织: | Amazon |
类型: | Item/Attribute/Value |
简介: | Scalable Web Service providing data storage, query and indexing in Amazon’s cloud. |
存储方案: | Items (like rows of data), Attributes (like column headers), and Values (can be multiple values) |
API(s): | SOAP, REST |
备注: | SimpleDB FAQ, Getting Started Guide, Developer Guide, API |
Tokyo Cabinet | |
公司/组织: | Mikio Hirabayashi |
类型: | Key/Value |
简介: | Library (written in C) of functions for managing files of key/value pairs. Multi-thread support. |
存储方案: | Keys and Values can have variable byte length. Binary data and strings can be used as a key and a value. |
API(s): | C, perl, Ruby, Java, Lua. |
备注: | Tokyo Cabinet Specifications, presentation(PDF format). Also available: Tokyo Tyrant (remote service), Tokyo Distopia (full text search), Tokyo Promenade (content management). |
Voldemort | |
公司/组织: | |
类型: | Hash Table |
简介: | “It is basically just a big, distributed, persistent, fault-tolerant hash table.” High performance and availability. |
存储方案: | Each key is unique to a store. Each key can have at most one value. Supported types: JSON, string, identity, protobuf, java-serialization. |
API(s): | Java, C++, custom clients |
备注: | Project Voldemort Wiki, Client how-to |
有如此多的非关系型数据库可选择真是一件好事。积累一些NoSQL相关的知识和初步体验能帮助管理人员、架构师、开发人员将所知道的关系型数据库的长处和短处跟NoSQL数据库进行对比。关系型数据库和SQL查询语言目前在各种数据库应用程序的设计、开发和管理过程中仍是主要元素和中枢系统。但当我们需要开始使用云数据库结构时,所有的我们了解的知识和收集的资料都能保证我们能迅速的进行迁移。这完全是根据用户和业务的需求,我们才能做出到底是使用现有的关系型数据库技术还是使用NoSQL进行替换。
在”SQL 数据库的终结 – 第三篇” 中,我将会告诉大家一些因特网上关于 NoSQL 的资料,过去和将要发生的事件,以及一些相关指导。
你是否正在使用非关系型数据库呢?你是否已经放弃了SQL和关系型数据库呢?你是否正在把你的数据转移到一个公共的或私有的云数据库里呢?请发表评论。
编程就是人生!