BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Scott Leberknight谈“多语”持久化

| 作者 Srini Penchikala 关注 34 他的粉丝 ,译者 郭晓刚 关注 0 他的粉丝 发布于 2009年8月4日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在软件开发领域,数据持久化方案在最近数年中已经取得长足发展。除了先前持久化的默认选项——关系数据库系统,数据库的疆土上出现了更多样化的选择。在日前举行的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账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

非常好的主题 by hua wen

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

所以我们需要的不是ORM by Jeffrey Zhao

而是OAM:Object-Any Mapping

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

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

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT