BT

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

RavenDB创始人谈.NET、NoSQL上的ACID以及该项目的未来特性

| 作者 Roopesh Shenoy 关注 0 他的粉丝 ,译者 臧秀涛 关注 4 他的粉丝 发布于 2013年2月1日. 估计阅读时间: 4 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

最近发布的RavenDB 2.0带来了一些新特性。在InfoQ对RavenDB的创始人和项目主管Oren Eini(Ayende Rahien)的独家专访中,他与我们分享了该项目各种决策背后的理由以及项目的未来。

在RavenDB项目于2009年启动时,Erlang也是评估过的选择之一。然而,考虑到大家在.NET方面的现有经验、很多可选的重要类库以及.NET在企业级运维社区(Enterprise Ops community)的使用率,团队还是坚持选择了.NET。

我们在.NET 1.0 Alpha版早期就开始使用了。这是我们熟悉的环境,用着舒服,通过.NET我们能够获得高性能、可靠性和稳定性,也不必自己开发上层数据库。

此外,我们希望开发的东西容易集成,可以方便地添加到许多组织现有的生态系统中去。我们也希望产品能够构建在一个非常完善的基础之上。这既适用于客户端,也适用于服务端。在客户端,我们提供了非常好的.NET集成;而在服务端(运维),我们做到了容易扩展、监控和定制。

Erlang库的类型非常有限,有些东西就是很难实现。特别是与CLR这种丰富的环境相比,Erlang简直是一片荒芜。当然,我知道这么说会招致很多Erlang爱好者的不满。但这个决定并不是草率做出的。在做决定之前,我通读了CouchDB的整个代码库,希望能喜欢上它(至少在那时,CouchDB还不是地道的Erlang程序)。

举例来说,RavenDB利用了底层的库,如Lucene或是一些现有的、可以直接使用的、针对CLR的空间(Spatial)库。即便Erlang中存在类似的东西,找起来也非常困难。

但到最后,这就是专业知识方面的问题了。我们知道如何让CLR跑起来,如何灵活地控制它,以及让它不再装死。

这种选择看来是有效的,目前RavenDB在Ohloh列出的所有项目团队中位居前2%

相对于其他NoSQL数据库,保证ACID是RavenDB的优势之一:

我认为很多NoSQL解决方案目前只学习了在上世纪70年代后期玩数据库的人看来已经很显而易见的一些东西。没有事务是很难干活的。不能依赖事务,开发者就要尝试在自己的代码中管理事务,甚至无法管理事务,随机的数据损坏以及很多复杂性问题随处可见。

当然,事务并不简单。要正确编写,并使之具有较高的性能,需要一点策略。但实际上并没有很好的选择。对业务开发者而言,除了现在让他们头疼的各种问题,再让他们确保系统的事务性,这要求太高了。

我自己偶尔也开发业务应用,我可以告诉你,你会希望把我冰冷的死亡之手撬开拿到事务功能的。这就是为什么RavenDB的核心保证之一就是事务安全性概念的原因。RavenDB包含了完整的ACID保证。

RavenDB的架构是基于包的,它有一个很薄的核心,便于开发者扩展RavenDB。Oren解释说,RavenDB团队自身发布的很多特性就是通过特性包的形式添加的,可以选择是否加入。随着代码的成熟,这些特性才逐渐移到核心之中。这样就很容易无干扰地提供大量新特性。开发者也可以选择构建自己的扩展,所有他们需要做的就是继承RavenDB提供的某个扩展点,编译代码,然后将dll放到Plugins目录下。

至于明年有什么期待:

我们希望支持额外的客户端,从WinRT到Android到iPhone再到JVM。我们希望有一个更好的管理大规模RavenDB集群节点的集中管理系统,该计划正在进行之中。我们还想在RavenDB之上的报告概念方面做些工作,不过这很大程度上是实验性的,可能最后不会有什么结果。但最重要的工作很可能是改进索引管理、查询优化器以及RavenDB如何自动调整以便更好地适应生产环境。

RavenDB使用了双许可证策略,对非开源(商业)项目采用订阅方式。它也可以从如RavenHQCloudBird等供应商处以托管服务形式获得。

查看英文原文RavenDB Founder On .NET, ACID with NoSQL, Upcoming Features

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的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通知我

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

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

讨论

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


找回密码....

Follow

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

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

Like

内容自由定制

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

Notifications

获取更新

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

BT