Какой самый простой способ имитировать таблицу базы данных с индексом в хранилище значений ключа?

StackOverflow https://stackoverflow.com/questions/2272996

Вопрос

Какой самый простой способ имитировать таблицу базы данных с индексом в хранилище значений ключа?В хранилище значений ключей НЕТ ранжированных запросов и упорядоченных ключей.

То, что я хочу смоделировать (в порядке приоритета):

  1. Создание таблиц
  2. Добавление столбцов
  3. Создание индексов
  4. Запрос, основанный на первичном ключе
  5. Запрос, основанный на произвольных столбцах
Это было полезно?

Решение

Если вы используете Редис (расширенное хранилище ключей-значений, поддерживающее строки, списки, наборы и т.д.) Тогда это довольно просто.Я уже разработал Клиент C # redis который имеет встроенную поддержку для хранения моделей данных POCO.Эти точно такие же POCO могут быть использованы Ормлит чтобы сохранить его в RDBMS.

Кстати, Redis работает быстро, у меня есть эталонный показатель который сохраняет и извлекает всю базу данных Northwind (3202 записи) менее чем за 1,2 секунды (выполняется внутри UnitTest на 3-летнем iMac).

Я храню объекты двумя способами

  • Различные сущности, где я объединяю имя типа класса и первичный ключ для создания уникального ключа, например urn:user:1
    • Затем я поддерживаю отдельный набор первичных ключей (в наборе Redis), чтобы отслеживать все мои объекты, используя ключ, подобный: ids:user
  • В списке на стороне сервера Redis, который действует очень похоже на таблицу с поддержкой подкачки, используя ключ, подобный: lists:user

Другие советы

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

Хранилище ключ-значение должно поддерживать упорядочение ключей и ранжированный доступ к ключам.

Затем вам следует создать два словаря:

id -> payload

и

col1, id -> NULL

, где payload должен содержать все данные, которые могла бы содержать таблица базы данных, а ключи второго словаря должны содержать значения (col1, id) из каждой статьи первого словаря.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top