【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

  • 2013-01-31
  • 本文字数:1483 字

    阅读完需:约 5 分钟

最近发布的 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 使用了双许可证策略,对非开源(商业)项目采用订阅方式。它也可以从如 RavenHQ CloudBird 等供应商处以托管服务形式获得。

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2013-01-31 05:042696
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 130.4 次阅读, 收获喜欢 34 次。

关注

评论

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

第六周总结

算法训练营第二期:第二周总结

xiaomao

架构师训练营第 1 期 - 第 6 周 - 命题作业

wgl

week-6-part2 学习总结

陈龙

架构二期第二周总结

supersky6

week-6-part1 CAP 原理

陈龙

第六周作业

熊桂平

极客大学架构师训练营

Week 2 :框架设计(作业一)

Sean Chen

架构师训练营第 1 期 - 第 6 周 - 学习总结

wgl

与前端训练营的日子--Week01

SamGo

学习

第 6 周 是这么玩的???

Pyr0man1ac

架构师训练营第二期 - 第二周课后练习

xiaomao

第二周作业

伊灵

技术选型(二)

wing

极客大学架构师训练营

2 期架构师训练营 - 框架设计

云飞扬

极客大学架构师训练营

Dynatrace抓取系统中的任何方法Method的参数值

东风微鸣

APM Dynatrace

11/1-第二周-作业

张冬冬

学习

架构师训练营第 1 期第 6 周总结

owl

极客大学架构师训练营

非HTTP应用或批处理应用如何进行全链路监控

东风微鸣

全链路监控 非HTTP应用

架构师训练营第六周作业

脸不大

第6周作业

paul

架构师训练营第六周学习总结

文智

极客大学架构师训练营

ARTS打卡 第22周

引花眠

微服务 ARTS 打卡计划 springboot

在 iOS App 中显示 Build 时间和 git 分支名、commit 哈希

疯清扬

ios 编译时间 git version build time 编译日期

架构师训练营第六周作业

文智

极客大学架构师训练营

week2-作业一

未来已来

碎碎念

大头虾

6.1分布式关系数据库(上)

张荣召

架构师二期第二周作业

supersky6

作业

架构师训练营 1 期第 6 周:技术选型(二) - 作业

灵霄

极客大学架构师训练营

6.2分布式关系数据库(下)

张荣召

RavenDB创始人谈.NET、NoSQL上的ACID以及该项目的未来特性_.NET_Roopesh Shenoy_InfoQ精选文章