具有低内存要求和Ruby接口的数据库

时间:2011-01-06 21:20:29

标签: ruby database nosql memory-management key-value-store

对于内存很少的小型虚拟服务器,我需要一个内存要求较低的数据库。目前我被SQLite和京都内阁或东京内阁困住了。数据库应该有一个Ruby接口。

理想情况下,我想避免使用键值存储,因为我有“复杂”查询(比查找单个键更复杂)和元组作为键。另一方面,我不希望有一个固定的模式,并避免SQL数据库的规划和迁移工作。数据库服务器也不是必需的,因为只有一个应用程序将使用该数据库。

你有什么建议和数字吗?

4 个答案:

答案 0 :(得分:3)

  1. schema-less Postgresql(Postgresql 9.2 + json)。设置不像我想象的那么难/混乱。您可以获得很多查询的灵活性,同时仍然可以获得无模式存储的好处。 PG 9.2包括plv8js,这是一种新的语言处理程序,允许您在JavaScript中创建函数。以下是如何在PG 9.2中索引和查询JSON文档的一个示例:http://people.planetpostgresql.org/andrew/index.php?/archives/249-Using-PLV8-to-index-JSON.html

  2. CouchDB(使用BigCouch。基于CouchDB,但更少的错误/问题。):

    • 内存要求非常低。
    • 无模式。
    • 基于HTTP的界面。 Ruby有很多HTTP客户端。 HTTP缓存(如Varnish)也可以加快读取速度。
    • 广告素材/复杂查询。您可以在文档(记录)中的任何键上创建索引和查询。由于索引非常可编程,因此您可以获得非常有创意的查询。

    缺点:

    如果磁盘价格便宜且内存昂贵,那么它可以满足您的需求。

    “...... CouchDB的另一个优势,已经证明可以为数千个并发请求提供服务,只需要大约10MB的内存 - 这真是太棒了?!?!” (来自:http://www.larsgeorge.com/2009/03/hbase-vs-couchdb-in-berlin.html

答案 1 :(得分:1)

SQLite3非常适合您要做的事情。它被很多companies用作嵌入式应用数据库,因为它灵活,快速,经过良好测试,占用空间小。创建和清除表格很容易,因此它可以很好地与测试或单应用程序使用数据存储区配合使用。

它使用的SQL语言非常丰富,可以执行常规操作,但我建议使用Sequel。这是一个很棒的ORM,很容易让你把它当作一个完整的ORM来处理,或者一直下到原始SQL到DBM。

答案 2 :(得分:0)

您正在寻找一种只有数据库文件且没有正在运行的服务器的解决方案。在这种情况下,Sqlite应该是一个不错的选择 - 如果你不需要它,只需关闭连接就可以了。 Sqlite拥有您需要的一切和RDMS(期望直接强制执行FK,但可以通过触发器完成),内存占用非常少,因此在这种情况下您可能更担心ORM的内存(如果有的话)使用

就我个人而言,我也使用sqlite作为用例,因为它是可移植的,易于访问和安装(无论如何不应该是服务器上的问题,但在桌面应用程序中它是。)

答案 3 :(得分:0)

使用SQLite API的BerkeleyDB就是您所需要的。 http://www.oracle.com/technetwork/database/berkeleydb/overview/sql-160887.html