Формат данных boltdb для эффективного хранения
Мне нужно хранить бизнес-данные из MySQL в болт. Данные являются map[string]string
выглядит так:
{"id": "<uuid>", "shop_id":"12345678", "date": "20181019"... }
Поскольку объем данных будет огромным и будет увеличиваться, кроме разделения данных на отдельные файлы (например, 201810.db), я хотел бы сделать конечный файл как можно меньшим. Поэтому я планирую кодировать данные самостоятельно, используя "справочные таблицы", т. Е. Поскольку все ключи будут одинаковыми для всех элементов данных, я сопоставляю id=1, shop_id=2,... так что ключ будет использовать только 1~2 байта. И для значений я также делаю ту же кодировку, так что столбцы, которые сильно избыточны (то есть, выберите отличительные, возвращают только несколько результатов), будут занимать меньше места в файле болтов.
Теперь мой вопрос: как Bolt хранит ключи и значения? Если я буду использовать метод, описанный выше, будет ли болт хранить больше объектов "на страницу", чтобы в конечном итоге повысить эффективность использования пространства?
Или, поскольку он использует "страницы", так что даже хранение одного байта данных будет занимать всю страницу? Если это так, нужно ли вручную группировать группу объектов, пока их объединенный размер не станет больше, чем страница болта, чтобы сделать ее "полностью заполненной"? Конечно, это повредит произвольному доступу, но для моего приложения это может быть преодолено за счет увеличения сложности кодирования.