【IT168 评论】我们曾经讨论过“到底NoSQL能在我们的工作中发挥什么作用?”我们也在考虑如何选择一款NoSQL数据库方面提出过101个相关问题。我们甚至召开了一个在线研讨会,深入剖析了SQL、NoSQL或者同时应用两者在网页应用程序的扩展性方面能带来哪些助益。
现在我们改变目标,转而思索哪些具体应用因素会对选择产生影响以及哪种系统在应对此类因素时更加适用。
你有什么意见?
首先,我们先来聊聊各类数据模型。下列相关信息参考自Emil Eifrem的博文及NoSQL数据库说明。
文档类数据库
·传承:受Lotus Notes启发而来。
·数据模型:文档汇总,包括键-值汇总。
·实例: CouchDB, MongoDB
·优势: 数据建模自然、程序员易于上手、开发流程短、兼容网页模式、便于达成CRUD(即添加、查询、更新及删除的简称)。
图形类数据库
·传承:来自 Euler 及图形理论。
·数据模型:节点及关系,二者结合能够保持键-值间的成对状态
·实例: AllegroGraph, InfoGrid, Neo4j
·优势:轻松玩转复杂的图形问题、处理速度快
关系类数据库
·传承:源自 E. F. Codd在大型共享数据库中所提出的数据关系模型理论
·数据模型:以关系组为基础
·实例: VoltDB, Clustrix, MySQL
·优势:性能强大、联机事务处理系统扩展性好、支持SQL访问、视图直观、擅长处理交易关系、与程序员间的交互效果优异
面向对象类数据库
·传承:源自图形数据库方面的研究成果
·数据模型: 对象
·实例: Objectivity, Gemstone
·优势:擅长处理复杂的对象模型、快速的键-值访问及键-功能访问并且兼具图形数据库的各类功能
键-值存储
·传承: Amazon Dynamo中的paper概念及分布式hash表
·数据模型:对成对键-值的全局化汇总
·实例: Membase, Riak
·优势:尺寸掌控得当、擅长处理持续的小规模读写需求、速度快、程序员易于上手
BigTable Clones
·传承自:谷歌BigTable中的paper概念
·数据模型:纵列群,即在某个表格模型中,每行在理论上至少可以有一套单独的纵列配置
·实例: HBase, Hypertable, Cassandra
·优势:尺寸掌控得当、擅长应对大规模写入负载、可用性高、支持多数据中心、支持映射简化
数据结构类服务
·传承: 不明
·实例: Redis
·数据模型: 执行过程基于索引、列表、集合及字符串值
·优势:为数据库应用引入前所未有的新鲜血液
网格类数据库
·传承:源自数据网格及元组空间研究
·数据模型:基于空间的构架
·实例: GigaSpaces, Coherence
·优势:优良的性能表现及上佳的交易处理扩展性