Структура данных для хранения произвольных таблиц базы данных

Я хотел бы разработать структуру данных JVM (Java/Scala), который может использоваться, чтобы представить и сохранить содержание произвольных таблиц реляционной базы данных. Структура данных должна быть быстрой (не слишком интенсивный gc, благоприятный для кэша) и эффективная память, таким образом, большие таблицы могут поместиться в RAM.

Одно эффективное решение памяти состоит в том, чтобы сохранить каждый столбец отдельно в примитивном массиве, но я волнуюсь по поводу дружелюбия кэша, потому что объекты в той же строке не хранятся вместе. Строка со столбцами N подвергнется неудачным обращениям в кэш N, неважно, как узкий столбцы.

Другое решение состоит в том, чтобы сохранить каждую строку в объектном массиве, где каждый элемент представляет поле и брошен к корректному типу на извлечении, но это требует хранящих числовых типов в их помещенной в коробку форме, таким образом, это не очень эффективно памятью. И это - вероятно, не тот кэш, эффективный также.

Другим решением являются к расположению данные каждой строки в массив байтов тем же путем, реальные базы данных сериализируют свои строки, с помощью только столько же байтов по мере необходимости. Это благоприятно для кэша и эффективная память, но я обеспокоен стоимостью serialization/de-serialization на каждом доступе.

Каков лучший способ?

6
задан Seun Osewa 6 August 2010 в 17:13
поделиться