对于内存很少的小型虚拟服务器,我需要一个内存要求低的数据库。目前我被 SQLite 和京都内阁或东京内阁困住了。数据库应该有一个 Ruby 接口。
理想情况下,我想避免键值存储,因为我有“复杂”的查询(比查找单个键更复杂)和元组作为键。另一方面,我不希望有一个固定的模式并避免 SQL 数据库的规划和迁移工作。数据库服务器也不是必需的,因为只有一个应用程序会使用数据库。
你有什么建议和号码给我吗?
对于内存很少的小型虚拟服务器,我需要一个内存要求低的数据库。目前我被 SQLite 和京都内阁或东京内阁困住了。数据库应该有一个 Ruby 接口。
理想情况下,我想避免键值存储,因为我有“复杂”的查询(比查找单个键更复杂)和元组作为键。另一方面,我不希望有一个固定的模式并避免 SQL 数据库的规划和迁移工作。数据库服务器也不是必需的,因为只有一个应用程序会使用数据库。
你有什么建议和号码给我吗?
有无模式 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
CouchDB(使用 BigCouch。基于 CouchDB,但错误/问题更少。):
缺点:
如果磁盘便宜而内存昂贵,那么它将成为满足您需求的理想选择。
“...... CouchDB 的另一个优势,它已被证明可以服务数千个并发请求,只需要大约 10MB 的 RAM - 这有多棒?!?!” (来自:http ://www.larsgeorge.com/2009/03/hbase-vs-couchdb-in-berlin.html )
您可能正在寻找一个只有数据库文件而没有运行服务器的解决方案。在这种情况下,Sqlite 应该是一个不错的选择——如果你不需要它,只需关闭连接即可。Sqlite 拥有你需要的一切和 RDMS(期望直接执行 FK,但这可以通过触发器来完成),内存占用非常少,所以在这种情况下,你可能更担心你的 ORM 的内存(如果有的话)用途。
就个人而言,我也将 sqlite 用于该用例,因为它是可移植的并且易于访问和安装(无论如何这不应该是服务器上的问题,但在桌面应用程序中它是)。
您需要的是带有 SQLite API 的 BerkeleyDB。 http://www.oracle.com/technetwork/database/berkeleydb/overview/sql-160887.html