2016-06-09 2 views
0

LMDB - это хранилище ключей. Какие типы ключей и значений можно хранить здесь? Примеры показывают либо int или char arrays .. Кроме того, я хотел бы знать, если можно хранить данные, связанные в lmdb, как мы храним все данные, относящиеся к студенту в table в RDBMSЗначения, которые могут быть сохранены в LMDB

ответ

1

Похоже, вы не C, но в контексте языка C данные для ключей и значений в LMDB оба (void *) - то есть общие указатели на что угодно. Это означает, что можно использовать любой тип данных, который может быть выражен на языке программирования. На других языках, через любые привязки, ваши варианты могут быть более ограниченными.

LMDB не заботится о том, что вы храните, все, что он видит, это капли. Очевидно, что это не СУБД. Если вы хотите хранить структурированные данные, вам нужно управлять этой структурой самостоятельно. Вы можете взять сложную структуру данных и сериализовать ее в блоб и сохранить ее под одним ключом. Это подход, используемый в slapd OpenLDAP. Или вы можете настроить отдельные столбцы ваших данных как отдельные именованные базы данных в LMDB и сохранить отдельные значения в своих соответствующих БД. (Например, индексы в OpenLDAP и SQLite/SQLightning обрабатываются таким образом.) Итак, да, хотя LMDB не предоставляет никаких функций для управления самими отношениями, вы, безусловно, можете использовать его в качестве хранилища резервных копий РСУБД, если хотите. (Опять же, см. Пример SQLightning. Backend для MySQL/MariaDB или Postgres также выполнимы, но вовлекают намного больше кода клея между их интерфейсами и LMDB API.)

+0

Thankyou ... AFAIK, пара ключей и значений после сохранения могут быть удалены и не обновлены, а удаленные узлы могут быть повторно использованы позже. Что делать, если из 1000 записей я удаляю 500 записей и снова добавляю еще 250 записей? Будет ли сокращено пространство, занимаемое БД? – Jackzz

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