Re: Re: [pgsql-ru-general] Хранимая процедура: возврат строки разного формата
От | Dmitry E. Oboukhov |
---|---|
Тема | Re: Re: [pgsql-ru-general] Хранимая процедура: возврат строки разного формата |
Дата | |
Msg-id | 20110307213912.GA9791@apache.rbscorp.ru обсуждение исходный текст |
Ответ на | Re: [pgsql-ru-general] Хранимая процедура: возврат строки разного формата (Dmitriy Igrishin <dmitigr@gmail.com>) |
Список | pgsql-ru-general |
DI> Хороший пример задачи, где можно применить hstore. DI> Решение. DI> CREATE TABLE device(id serial not null primary key, name text not null); -- DI> усройство DI> CREATE TABLE measurement(id serial not null primary key, DI> device integer not null references device(id), DI> mtime timestamp not null default now(), DI> data hstore not null) ; -- измерение DI> Итого: 2 сущности - "устройство" и "измерение". Никаких объединений с pg_class. кабы было все так просто то и не стоило бы огород городить :) я тут просто задачу сильно упрощаю по отношению к реальной когда формулирую. на самом деле данные не удаляются, а помечаются как обработанные это раз. а во вторых по каждой из дочерних таблиц построены свои индексы/отчеты итп. то есть их не получается просто взять и в кучу соединить: как минимум эффективные индексы потеряем (в т. ч. и уникальные) то есть если мы перейдем к hstore, то получим способ записи/хранения, но потеряем способы выборки. для хешей одного типа нужен индекс по key1, для хешей другого типа по key2, для третьего - уникальный ключ по key3 и key4, плюс еще CHECK'и а так же некоторые измерения имеют друг на друга FOREIGN'ы. можно было бы по добавлении записи в любую таблицу пересчет общей статистики делать, но это накладно, поэтому вот такая схема как я выше нарисовал используется -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Вложения
В списке pgsql-ru-general по дате отправления: