Мне нужно разработать бэкенд ключей/значений, что-то вроде этого:
Table T1 id-PK, Key - string, Value - string
INSERT into T1('String1', 'Value1')
INSERT INTO T1('String1', 'Value2')
Table T2 id-PK2, id2->external key to id
some other data in T2, which references data in T1 (like users which have those K/V etc)
Я слышал о PostgreSQL hstore с GIN/GIST. Что лучше (с точки зрения производительности)? Делать это традиционным способом с помощью SQL джойнов и иметь отдельные колонки (ключ/значение)? Будет ли PostgreSQL hstore работать лучше в этом случае?
Формат данных должен быть любой ключ=>любое значение. Я также хочу сделать текстовое сопоставление, например, частичный поиск (LIKE % в SQL или эквивалент в hstore). Я планирую иметь около 1M-2M записей в нем и, возможно, масштабировать в какой-то момент.
Что вы рекомендуете? Пойти традиционным путем SQL, использовать hstore в PostgreSQL или любое другое распределенное хранилище ключей/значений с персистентностью?
Если это поможет, мой сервер - это VPS с 1-2GB RAM, так что это не очень хорошее оборудование. Я также думал о том, чтобы иметь слой кэша поверх этого, но я думаю, что это довольно усложняет проблему. Мне просто нужна хорошая производительность для 2M записей. Обновления будут производиться часто, а поиск еще чаще.
Спасибо.