FCon7折倒计时最后一周:日程已上线70%!查看详情>>> 了解详情
写点什么

Scott Leberknight 谈“多语”持久化

  • 2009-08-03
  • 本文字数:1463 字

    阅读完需:约 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、 Triplestores Tuplespaces 等等。

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

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

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

2009-08-03 04:321679
用户头像

发布了 225 篇内容, 共 59.1 次阅读, 收获喜欢 47 次。

关注

评论

发布
暂无评论
发现更多内容

“抽象类”到底抽不抽象?实例对比一看便知!

Java 程序员 后端

volatile关键字的原理和要避免的误区

Java 程序员 后端

Vue学习之基础入门

Java 程序员 后端

ZK(ZooKeeper)分布式锁实现

Java 程序员 后端

《Spring实战》读书笔记-第4章 面向切面的Spring

Java 程序员 后端

【C 语言小游戏】手打贪吃蛇1

Java 程序员 后端

WPF学习——依赖项属性(2)(1)

Java 程序员 后端

《JVM系列》 第六章 -- 对象的实例化与内存布局(1)

Java 程序员 后端

《Spring实战》读书笔记-第4章 面向切面的Spring(1)

Java 程序员 后端

[译] 微服务的设计模式

Java 程序员 后端

《菜菜的机器学习sklearn课堂》降维算法PCA和SVD

Java 程序员 后端

《重学Java高并发》Disruptor使用实战

Java 程序员 后端

Worktile、Teambition与Tower项目管理软件对比

Java 程序员 后端

架构实战营-模块三作业

随风King

「架构实战营」

ZooKeeper分布式配置——看这篇就够了

Java 程序员 后端

《JVM系列》 第六章 -- 对象的实例化与内存布局

Java 程序员 后端

《吃透MQ系列》核心基础全在这里了,一文啃透!

Java 程序员 后端

「并发原理专题」AQS的技术体系之CLH、MCS锁的原理及实现

Java 程序员 后端

智能边缘框架Baetyl,为各行业落地实践提供安全机制

百度大脑

人工智能 百度

WPF学习——依赖项属性(1)

Java 程序员 后端

Zookeeper(从7个方面来了解Zookeeper基础概念)

Java 程序员 后端

WPF学习——依赖项属性(2)

Java 程序员 后端

全面通透深入剖析工厂方法模式

Tom弹架构

Java 架构 设计模式

两强联手,百度智能云和中电互联打造自主可控工业互联网联合实验室

百度大脑

人工智能 百度

Win10安装Tomcat服务器与配置环境变量

Java 程序员 后端

windows 下JDK12的安装过程

Java 程序员 后端

windows7 本地搭建ELK 收集项目运行日志

Java 程序员 后端

营口市广东商会成立

江湖老铁

《代码重构》之方法到底多长算“长”

Java 程序员 后端

Volatile:内存屏障原理应该没有比这篇文章讲的更清楚了

Java 程序员 后端

YGC问题排查,又让我涨姿势了!

Java 程序员 后端

  • 扫码添加小助手
    领取最新资料包
Scott Leberknight谈“多语”持久化_架构_Srini Penchikala_InfoQ精选文章