Я хотел бы спроектировать структуру данных JVM (Java / Scala), которая может использоваться для представления и хранения содержимого произвольных таблиц реляционной базы данных.Структура данных должна быть быстрой (не слишком интенсивной для gc, кеш-ориентированной) и эффективной для использования памяти, поэтому в ОЗУ могут помещаться таблицы большего размера.
Одно эффективное решение для памяти - хранить каждый столбец отдельно в примитивном массиве., но меня беспокоит удобство кэша, поскольку элементы в одной строке не хранятся вместе.Строка с N столбцами вызовет N пропусков кэша, независимо от того, насколько сужены столбцы.
Другое решение заключается в сохранении каждой строки в массиве объектов, где каждый элемент представляет поле и приводится к правильному типу при извлечении., но это требует хранения числовых типов в их коробочной форме, поэтому это не очень эффективно для памяти.И это, вероятно, также неэффективно для кэширования.
Другое решение состоит в размещении данных каждой строки в байтовый массив так же, как реальные базы данных сериализуют свои строки, используя только столько байтов, сколько необходимо.Это удобно для кеша и памяти, но меня беспокоит стоимость сериализации / десериализации при каждом доступе.
Какой самый лучший способ?