База данных с низкими требованиями к памяти и интерфейсом Ruby - PullRequest
2 голосов
/ 07 января 2011

Мне нужна база данных с низкими требованиями к памяти для небольшого виртуального сервера с небольшим объемом памяти.На данный момент я застрял с SQLite и кабинетом Киото или Токио.База данных должна иметь интерфейс Ruby.

В идеале я хочу избегать хранения значений ключей, потому что у меня есть «сложные» запросы (более сложные, чем поиск одного ключа) и кортежи в качестве ключей.С другой стороны, я не хочу иметь фиксированную схему и избегать усилий по планированию и миграции базы данных SQL.Сервер базы данных также не требуется, поскольку база данных будет использоваться только одним приложением.

У вас есть какие-либо рекомендации и цифры для меня?

Ответы [ 4 ]

3 голосов
/ 13 июля 2011
  1. Существует без схемы Postgresql (Postgresql 9.2 + json).Не так сложно / запутанно настроить, как я думал.Вы получаете большую гибкость с запросами, но при этом получаете преимущества хранилища без схемы.PG 9.2 включает plv8js, новый языковой обработчик, который позволяет создавать функции в JavaScript.Вот один пример того, как вы можете индексировать и запрашивать документы JSON в PG 9.2: 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, которая, как оказалось, обслуживала тысячи одновременных запросов, требовала только около 10 МБ ОЗУ - как это здорово?!?! "(От: http://www.larsgeorge.com/2009/03/hbase-vs-couchdb-in-berlin.html)

1 голос
/ 07 января 2011

SQLite3 отлично подходит для того, что вы пытаетесь сделать.Он используется многими компаниями в качестве базы данных для встроенных приложений, потому что он гибкий, быстрый, хорошо протестированный и занимает мало места.Таблицы легко создавать и отбрасывать, поэтому они хорошо работают с хранилищами данных для тестирования или использования в одном приложении.

Используемый язык SQL достаточно богат, чтобы выполнять обычные задачи, но я бы рекомендовал использовать Сиквел с ним.Это отличный ORM, который легко позволяет вам рассматривать его как полноценный ORM или полностью перейти к использованию необработанного SQL для DBM.

0 голосов
/ 08 января 2011

BerkeleyDB с SQLite API - это то, что вам нужно. http://www.oracle.com/technetwork/database/berkeleydb/overview/sql-160887.html

0 голосов
/ 07 января 2011

Вы ищете решение, которое имеет только файл базы данных и не работает сервер, вероятно.В этом случае Sqlite должен быть хорошим выбором - если вам это не нужно, просто закройте соединение и все.Sqlite имеет все, что вам нужно, и RDMS (ожидайте принудительного применения FK напрямую, но это можно сделать с помощью триггеров), с очень небольшим объемом памяти, поэтому в этом случае вы, вероятно, больше беспокоитесь о памяти вашего ORM (если есть)использует.

Лично я использую sqlite и для этого варианта использования, так как он переносим и прост в обращении и установке (что в любом случае не должно быть проблемой на сервере, но в настольном приложении это).

...