2011-03-07 72 views

回答

4

很好奇,但是用Ruby编写的任何NoSQL DBMS?

2007年,Anthony Eden玩了RDDB,一个CouchDB启发的面向文档的数据库。他仍然在他的GitHub账户中保留a copy of the code

我依稀记得,在或几乎在同一时间,别人也在玩Ruby中的数据库。我认为这是受到RDDB的启发或对RDDB的反应。

最后但并非最不重要的,有在STDLIB的PStore library,这  –取决于你的定义  –可能会或可能不会算作一个数据库。

如果没有,在Ruby中创建一个会不明智?

我在Ruby中看到的最大问题是它的并发原语。线程和锁是所以 20世纪60年代。如果你想支持多个并发用户,那么你显然需要并发性,但如果你想构建一个嵌入式进程内数据库,那么这个问题就不那么重要了。

除此之外,Ruby还有一些不太好的实现,但这不是Ruby的限制,而是那些特定的实现,它也适用于几乎所有其他编程语言。 Rubinius(特别是当前的开发主干,增加了Ruby 1.9的兼容性,并删除了Global Interpreter Lock)和JRuby都是不错的选择。

作为一个额外的好处,Rubinius带有一个内置的演示程序库并发性,JRuby可让您访问例如Clojure的并发库或Akka actors图书馆。

我想,性能并不是真正的问题。 Rubinius的Hash课程以100%纯Ruby编写,与YARV的Hash课程相媲美,该课程以100%手工优化的C语言编写。这表明Ruby代码至少在被仔细编写时可以像C一样快,特别是因为数据库往往是长期运行的,Rubinius或JRuby(并且在后一种情况下也是JVM的)动态优化器(其中C编译器通常做的不是都有)可以真的开始工作。

+0

正是我在找什么;对我的问题的答案。 – gkbii 2011-03-07 20:35:37

0

Ruby是任何类型的DBMS

C/C++ /二郎的速度太慢,一般最好的选择。

0

您一般不应该关心DBMS实现的是哪种编程语言,只要它具有所有功能并且可以从您选择的应用程序编程语言中使用。

所以,这里真正的问题是你需要一个用Ruby编写还是可用于Ruby。

在第一种情况下,我怀疑你会发现用Ruby编写的DBMS 原生(任何对此语句的更正都将被理解)。

在第二种情况下,您应该能够为任何体面的DBMS关系查找Ruby绑定/包装。

+0

同意戈兰。大多数数据库都有可用的ruby绑定/包装器。有几个用于SQL /关系数据库的Ruby绑定。还有可用的非SQL绑定。例如,Berkeley DB的键/值对API有几个Ruby绑定。最近的一个可以在这里找到:https://github.com/mattbauer/bdb – dsegleau 2011-03-08 19:37:11