Поддержка нескольких индексов с помощью кэша guava (таблица в памяти)

Я пытаюсь реализовать упрощенную кэшированную в памяти «таблицу», в которой есть 2 типа индексов: первичный и вторичный. .

  • Первичный индекссопоставляет один ключ (первичный ключ) с уникальным значением (интерфейс Map)

  • Вторичный индекссопоставляет один ключ с набором значений (Multimap отвечает всем требованиям)

Очень похоже на таблицу в мире СУБД, где есть несколько столбцов поиска. Иногда вам нужно искать по PK, иногда возвращать список строк на основе общего свойства. Прямо сейчас нет необходимости в других операциях, кроме равных (=) (т. е. никаких запросов диапазона или сопоставления с образцом).

Добавьте к вышеприведенной структуре данных семантику кеша (вытеснение, заполнение данных/загрузчик кеша, обновление и т. д.), и это в значительной степени то, что необходимо.

Я хотел бы спросить вашего совета, как лучше всего подойти к данной проблеме. Должен ли это быть кеш на индекс или кеш (для PK) + (синхронизированный) Multimap для вторичных индексов?

Будем признательны за любую помощь.

С уважением.

16
задан Andrei 30 May 2012 в 00:12
поделиться