postgresql hstore key/value vs traditional SQL performance

Мне нужно разработать бэкенд ключей/значений, что-то вроде этого:

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 записей. Обновления будут производиться часто, а поиск еще чаще.

Спасибо.

9
задан Gary 16 June 2012 в 01:21
поделиться