2

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

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

你有什么建议和号码给我吗?

4

4 回答 4

3
  1. 有无模式 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 的 RAM - 这有多棒?!?!” (来自:http ://www.larsgeorge.com/2009/03/hbase-vs-couchdb-in-berlin.html )

于 2011-07-13T00:44:47.570 回答
1

SQLite3非常适合您尝试做的事情。它被许多公司用作他们的嵌入式应用程序数据库,因为它灵活、快速、经过良好测试并且占用空间小。创建和删除表很容易,因此它可以很好地用于测试或单应用程序使用的数据存储。

它使用的 SQL 语言足够丰富,可以做普通的事情,但我建议使用Sequel。这是一个很棒的 ORM,您可以轻松地将其视为成熟的 ORM,或者直接将原始 SQL 与 DBM 对话。

于 2011-01-07T00:16:31.357 回答
0

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

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

于 2011-01-06T21:25:05.063 回答
0

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

于 2011-01-08T15:34:48.610 回答