2016-04-03 3 views
2

Я пишу небольшой автономный инструмент Lua, который использует несколько пар ключ/значение в деревьях в качестве хранилища данных. Мой прототип использует таблицы Lua, они идеально подходят для моей задачи. Однако записи таблицы меняются и постоянно растут. Для меня это является хорошей причиной для хранения всех данных в базе данных.Держите несколько таблиц Lua в небольшой базе данных?

Многие небольшие инструменты полагаются на базы данных SQLite, но я думаю, что должно быть лучшее (ключевое значение) решение, если вы хотите хранить таблицы Lua малого и среднего размера. Я читал о хранении деревьев с SQL, но это выглядит сложным с первого взгляда.

Есть ли KISS решение для хранения и извлечения таблиц Lua в базах данных, возможно, вместе с языком запросов?

База данных по-прежнему будет небольшой, должна быть постоянной и не должна обрабатывать параллельные запросы. Производительность также не проблема, инструмент только однопользовательский. Я бы предпочел DB на диске/файле. В идеале обновления (запросы/скрипты) в БД должны находиться под контролем версий.

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

Я хочу, чтобы избежать полномасштабных/серверных решений, таких как MongoDB или с помощью графических DB, таких как Neo4j, они были бы излишними для моей задачи.

+0

Для «таблиц Lua от малого до среднего», где производительность не является проблемой, почему бы не сериализовать в стандартном формате, таком как JSON? База данных, вероятно, будет излишней. –

+0

@ColonelThirtyTwo Хорошо, но в этом случае я оставил бы данные в файле lua, содержащем только таблицу Lua. Является ли JSON не 1: 1 сопоставимым с таблицей Lua при хранении данных? – smartmic

+0

Даже если вы, кажется, избегаете этого, я бы пошел с подходом SQLite3. Он очень простой, быстрый, масштабируемый, использует мощный SQL (включая рекурсивные запросы - хорошо для древовидных структур), обеспечивает базу данных ACID и разгружает вашу основную память от хранения больших наборов данных. – tonypdmtr

ответ

1

Мое связывание lgdbm содержит прокси-сервер для баз данных gdbm. Другими словами, вы можете взаимодействовать с базой данных gdbm просто путем чтения и записи записей в таблицах Lua.

Чтобы это было просто, lgdbm работает только со строковыми клавишами и значениями, но при необходимости его можно модифицировать для обработки других типов.

Смежные вопросы