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