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

问题描述 投票:2回答:4

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

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

你有什么建议和数字吗?

ruby database nosql memory-management key-value-store
4个回答
1
投票

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

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


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)也可以加快读取速度。 创意/复杂的查询。您可以在文档(记录)中的任何键上创建索引和查询。由于索引非常可编程,因此您可以获得非常有创意的查询。 缺点: 设置查询/索引的学习曲线。 您必须安排一种称为“压缩”的清理操作。 与其他数据库相比,数据将占用更多空间。 更多:http://www.paperplanes.de/2010/7/26/10_annoying_things_about_couchdb.html 如果磁盘价格便宜且内存昂贵,那么它可以满足您的需求。 “...... CouchDB的另一个优势,已经证明可以为数千个并发请求服务,只需要大约10MB的内存 - 这真是太棒了?!?!” (来自:http://www.larsgeorge.com/2009/03/hbase-vs-couchdb-in-berlin.html

0
投票

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.