caosainan 发布于 2010/03/31 09:50
阅读 1K+
收藏 3

     英文原文:The end of SQL and relational databases? (part 2 of 3)

     作者:David Intersimone


在 “SQL数据库的终结? (第一篇/共三篇)” 里我简要介绍了一下关于SQL语言和关系型数据库的背景知识,包括它的过去和将来,介绍了一些以隐藏数据库编程的复杂度为目的模式框架的流行和NoSQL 数据库的兴起。在本文的第二篇里,我将介绍一些现有的开源的或非开源的NoSQL数据库。之后,在第三篇里,我将引导你去发现网上的关于NoSQL的资 料,告诉你一些跟NoSQL相关的已经发生的和即将发生的一些事件,给软件开发者提供一些这方面的指导。 

你想象不到,如今竟然有了那么多开源的/非开源的NoSQL数据库产品。而同时,每天都有新的品种出现。如果我的列举中遗漏了你喜爱的 NoSQL数据库,请发评论告诉我。下面你将看到的就是各种不同类型的NoSQL数据库产品:面向文档的,面向集合的,面向列的,面向对象的,面向图的, 面向有序集合的,面向行的,等等。


公司/组织: Franz Inc.
类型: Graph
简介: Modern, high performance, persistent graph database.
存储方案: Disk based, meta-data and data triples.
API(s): SPARQL, Prolog


公司/组织: Oracle
类型: Key/Value
简介: C language embeddable library for enterprise-grade, concurrent,
transactional storage services. Thread safe to avoid data corruption or
存储方案: 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


公司/组织: Google
类型: 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)


公司/组织: 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


公司/组织: 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


公司/组织: Versant
类型: Object
简介: Java and .NET dual license (commercial and open source) object
存储方案: Data objects are stored in the way they are defined in the
API(s): Java, .NET languages.
备注: db4o db4o
database runtime engine
, about db4o


公司/组织: 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
reference manual


公司/组织: Cliff Moon
类型: Key/Value
简介: Open source Amazon
clone written in Erlang.
存储方案: Distributed key/valve store, Pluggable storage engines.
API(s): Thrift API
备注: Dynomite Wiki


公司/组织: 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
web site


公司/组织: FIS
类型: Hierarchical, multi-dimensional sparse arrays, content associative
简介: 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


公司/组织: Christoph Rupp
类型: Embedded storage library
简介: Lightweight embedded database engine. Supports on disk and in memory
存储方案: B+tree with variable length keys.
API(s): C++, Python, .NET and Java
备注: hamsterdb FAQ, examples, tutorial


公司/组织: 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


公司/组织: 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


公司/组织: 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


类型: 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


公司/组织: 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


类型: 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
(PDF format)


公司/组织: 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


公司/组织: 10gen
类型: Document
简介: Scalable, high-performance, open source, schema-free,
document-oriented database
存储方案: JSON-like data schemas, Dynamic queries, Indexing, replication,
API(s): C,C++, Java, JavaScript, perl, PHP, Python, Ruby, C#, Erlang, Go,
Groovy, Haskell, Scala, F#
备注: MongoDB Documentation


公司/组织: 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


类型: 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


公司/组织: 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)
备注: SimpleDB FAQ, Getting
Started Guide
, Developer

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).


公司/组织: LinkedIn
类型: 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

有如此多的非关系型数据库可选择真是一件好事。积累一些NoSQL相关的知识和初步体验能帮助管理人员、架构师、开发人员将所知道的关系型数据 库的长处和短处跟NoSQL数据库进行对比。关系型数据库和SQL查询语言目前在各种数据库应用程序的设计、开发和管理过程中仍是主要元素和中枢系统。但 当我们需要开始使用云数据库结构时,所有的我们了解的知识和收集的资料都能保证我们能迅速的进行迁移。这完全是根据用户和业务的需求,我们才能做出到底是 使用现有的关系型数据库技术还是使用NoSQL进行替换。

在”SQL 数据库的终结 – 第三篇” 中,我将会告诉大家一些因特网上关于 NoSQL 的资料,过去和将要发生的事件,以及一些相关指导。