From: | Михаил <m(dot)nasedkin(at)gmail(dot)com> |
---|---|
To: | Dmitriy Resnyanskiy <zubosem(at)gmail(dot)com> |
Cc: | pgsql-ru-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: Особый способ хранения в базах Postgres |
Date: | 2021-06-15 04:35:10 |
Message-ID: | CALSKcLQVWbS_HTWPm7=8Z4_y7hyev=YmtW3cYd7pN+p-QVD_QA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Я тоже такими вещами занимался, когда по молодости кровь кипела, а
проектов толком не было. Вариаций на данную тему миллион. Вашу работу
одобряю. Мало кто захочет ее применять, потому что, например, я сейчас
в около средней конторе, где бэк-программисты вообще не видят чистого
скуля, с БД оперируют модельные обертки. А мне приходится смотреть на
это в тоске и печали.
Благ и удачи.
27.05.2021, Dmitriy Resnyanskiy<zubosem(at)gmail(dot)com> написал(а):
> Всем привет!
>
> Меня зовут Дмитрий, я решился написать сюда, надеюсь, что попал правильно.
> При проектировании БД нередко сталкиваешься с проблемами хранения:
>
> 1. Хранение и расширение каких-нибудь профайлов чревато альтерами (ALTER
> TABLE) в разрастающихся таблицах.
> 2. Непонятно, как изящно связывать части профайлов, объектов, как
> собирать и прочее.
> 3. Возникают сложности с индексацией, потому что хочется искать по всем
> полям, а индексы на всю таблицу не повесишь, ну или это создаст другие
> проблемы.
> 4. Всегда хочется единый идентификатор для всей номенклатуры объектов в
> базе данных, чтобы, например, в Кликхаус поставить на него ссылку и
> легко
> забирать исчерпывающие данные из внешнего словаря.
>
> Использовать обычную реляционную схему проектирования проблематично по
> каждому указанному пункту. Поэтому у нас появилась идея разбить поля по
> отдельным таблицам (таблицам значений), в которых поле значения
> индексировано.
>
> 1. Запись о существовании объекта создается в таблице объектов - тут же
> и создаются уникальные идентификаторы для всех объектов в системе
> (PRIMARY
> KEY id).
> 2. Все таблицы значения имеют поля с идентификатором объекта, которому
> это значение принадлежит.
> 3. Поля и типы объектов описываются в специальных таблицах для типа и
> ключа соответственно.
> 4. Специальные триггеры при вставке записи в таблицы типа и ключа
> создают новую уникальную таблицу в системе, где будут храниться значения
> объектов.
> 5. В системе созданы функции, которые собирают объекты и сохраняют,
> распределяя данные по таблицам значений.
> 6. Для контроля целостности данных из нескольких полей создаются
> специальные таблицы с составными индексами, которые вместе со
> специальными
> триггерами позволяют правильно записывать и контролировать уникальные
> поля
> объектов.
> 7. Трехэтажными джоинами по индексированным полям можно быстро
> "дотянуться" до любых данных объекта.
>
> Нам очень интересно ваше мнение о проделанной работе. Пожалуйста, взгляните
> на нее экспертным взглядом и укажите на проблемы и недостатки такого
> подхода.
> Возможно, уже давно есть технологии, фреймворки, которые отталкиваются от
> тех же задач и проблем, пожалуйста, дайте ссылки на них почитать.
> Код не претендует на совершенство и, скорее всего, стоит надеть специальный
> костюм ассенизатора, прежде чем туда заглянуть ;)
> Не судите строго, большое спасибо.
>
--
---
С уважением,
Михаил Наседкин
From | Date | Subject | |
---|---|---|---|
Next Message | Dmitriy Resnyanskiy | 2021-06-15 16:52:15 | Re: Особый способ хранения в базах Postgres |
Previous Message | Sergei Kornilov | 2021-06-08 09:50:03 | Re: PostgreSQL 12-1C проведение документов в ~3 раза медленнее на Linux |