InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

Scott Leberknight谈“多语”持久化

作者 Srini Penchikala 译者 郭晓刚 发布于 2009年8月3日

领域
运维 & 基础架构,
架构 & 设计,
语言 & 开发
主题
数据访问 ,
持久性 ,
NFJS ,
数据库 ,
架构 ,
Polyglot持久化 ,
数据存储

在软件开发领域,数据持久化方案在最近数年中已经取得长足发展。除了先前持久化的默认选项——关系数据库系统,数据库的疆土上出现了更多样化的选择。在日前举行的Lone Star Software Symposium软件研讨会上,Scott Leberknight做了一次题为“Polyglot Persistence ”演讲,讨论现在的新情况,即开发者们在选取数据持久化方案时可以有众多备选的数据库产品,诸如Amazon SimpleDB、Google Bigtable、Microsoft SQL Data Services (SDS)和CouchDB等。

早在2006年12月,Neal Ford就写过一篇“ Polyglot Programming(多语编程)”,预言了我们现在所见的一波趋势,即为手头的特定工作选用最适合的语言。与确立一种“默认”语言(如Java或C#)的做法相比,多语编程要点是为特定工作挑选适当的语言,而不仅仅是挑选框架。这番说法用在持久化方面也成立。

Scott说开发者在MVC和AJAX框架等领域有许多选择,如Struts、Apache MyFaces、Spring MVC、Wicket、Rails、Grails、jQuery、dojo、Ext JS……而在解决企业应用的数据持久化问题上,开发者同样拥有众多选择。“多语”持久化着眼于考虑持久化需求,然后选取一种最能满足需求的持久化机制。

由于企业应用在功能和技术需求上的多样性,不可能有普适的方案。以下是一些推动数据持久化领域创新的因素:

  • 可伸缩性
  • 高可用性
  • 容错能力
  • 可分布性
  • 灵活性(即“schemaless”数据库)
  • 新类型的应用,如社交网络网站

应用管理之下的数据,其类型也有很大区别。可能是结构化的(关系数据)、半结构化的(如医疗记录系统中的文档)或者是无结构的(音频/视频流)。面向对象的数据库面向文档的数据库、Bigtable、键值存储、实体属性(Entity Attribute)值数据库等不同类型的数据库纷纷出现,各自瞄准了不同的数据持久化需求。

他还谈到ACID和BASE的概念会极大地影响数据库系统的事务和可用性。ACID和BASE提供的保证不同、代价也不同。例如,ACID系统以可用性为代价去保证数据的一致性,所以在两段式提交中,只要有一项事务性的资源倒下,系统的可用性就是零。而BASE牺牲即时的数据一致性去换取高可用性的分区容忍性。问题的具体情况决定了我们是否可以牺牲一致性去换取高可用性、容错、冗余等好处。

面向文档的数据库的例子有Lotus Notes,、Apache CouchDB、Amazon SimpleDB和ThruDB。Scott演示了通过REST API访问Simple DB数据库和CouchDB视图,并根据数据库中的文档生成汇总和报表。

Project Voldemort是另一个数据持久化方案,它是一个分布式的键-值存储系统,并有跨服务器自动复制、透明的服务器失效处理、自动数据项目版本化等特性。LinkedIn用它解决高伸缩性存储的问题,适用于简单的功能分区力所不及的场合。来自LinkedIn的Jay Kreps将于即将召开的 QCon 大会介绍Voldemort 项目

Scott也讨论了其他数据库产品,如Amazon的Dynamo——一个键-值数据存储系统、Apache HBase——开源、分布式、面向列的存储模型,仿照了Google Bigtable实现。数据持久化的疆域上还活跃着更多的物种,如XML数据库、Semantic Web/RDF、TriplestoresTuplespaces等等。

大多数新的数据持久化系统都提供了基于REST的API,API语言也有Java、C#、PHP、Visual Basic和Ruby等。Scott建议开发者考虑数据库方案的时候,应该思考自己的应用到底需要什么,而不要去想现在流行什么。决策时应该从以下方面去考查:

  • 项目需求
  • 分布式部署
  • 容错
  • 查询功能的丰富性
  • Schema演进
  • 可伸缩能力的极限
  • 强制施加关系的能力
  • ACID还是BASE
  • 键/值存储

查看英文原文:Scott Leberknight on Polyglot Persistence

译者 郭晓刚 是InfoQ中文站架构社区编辑,创建并终结过数家软件小企业,翻译过多本技术书籍。

非常好的主题 发表人 hua wen 发表于
所以我们需要的不是ORM 发表人 Zhao Jeffrey 发表于
Re: 所以我们需要的不是ORM 发表人 邓 嘉 发表于
  1. 返回顶部

    非常好的主题

    发表人 hua wen

    我最近就在关注Couchdb
    但是讲得不够深入啊,什么情况下应该有什么样的解决方案,有案例分析就好了

  2. 返回顶部

    所以我们需要的不是ORM

    发表人 Zhao Jeffrey

    而是OAM:Object-Any Mapping

  3. 返回顶部

    Re: 所以我们需要的不是ORM

    发表人 邓 嘉

    ORM不涉及业务逻辑,而OAM实际已经涉及了业务逻辑了