@iasokolov
Разработчик

Какие есть примеры построения большой организационной структуры?

Ищу пример построения и разбора приложения для описания организационной структуры предприятия, в котором есть более 1 миллиарда объектов (отделы, должности, работники, рабочие места, оборудование и т.д.). Т.е. по сути это гигантский граф, где каждый объект (сотни разных типов объектов) может быть связан с множеством других объектов на основании каких-то правил.
Интересует как хранить такие данные. Скорее всего не в двух таблицах "объекты" и "связи". Судя по всему даже 1 миллиард объектов в таблице "объекты" уже убьет производительность, не говоря уже о таблице "связи", где будет 100 миллиардов строк.
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
mayton2019
@mayton2019
Bigdata Engineer
Ох и амбиции. И что за перфекционизм в отношении Postgresql?

Не знаю как автор посчитал миллиард. Это если все население планеты Земля составляет порядка 8 млрд.
И что мы возьмем целую страну и инвентаризируем ее чтоб получить такое число?

Для графовых БД существует не Postgresql а специальные БД типа Neo4j. Но еще до того как ты доберешся
до графовых БД - задание может многократно измениться и выйдет что граф - рудимент. Так часто бывало.
Вообще очень малое число задач требуют именно графов. Если табличка отражает семантику модели
то можно и ее использовать. Только с условием не решать в ней задачи о рукопожатиях.

По поводу того что в таблице что-то там кого-то убивает на 1 млрд. Я отвечу так что если вы строите OLTP
систему то в ней этот миллиард никогда не будет использоваться целиком. Там будут горячие области.
Их можно каким-то образом кешировать или алгоритмически пред-выбирать. Или брать key-value системы если ТЗ позволяет. Для них что миллиард что триллион все безразлично. Не забывайте только поднимать новые ноды и подкидывать диски в облачко. Или если речь идет
о BigData к примеру то там есть свой техно-стек. Например Apache Spark / GraphX. Хотя я с модулем GraphX
не работал ни разу. Но биг-дата запросы обычно никогда не запрашивают одного физ-лица или одну
единицу тех-средства. Биг дате ставят задачу собрать всё про всех и отгрузить отчет в виде другой таблички
или DataMart. И на это ей дадут пару часиков а то и день. Поэтому разговоры относительно убивания
производительности - очень можно смягчить.

Вообще такие сложные системы не обязаны строиться поверх Postgres или Neo или Spark. В их разработке
вполне можно использовать целый pipeline из технологий где например Postgres будет просто одним
из элементов. Или одним stage.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Почти в 100℅ случаев такие данные хранятся в LDAP.
Ответ написан
@Dementor
программист, архитектор, аналитик
сотни разных типов объектов = сотни разных таблиц

У каждой сущности свои свойства - у сотрудников ФИО и табельный номер, а у оборудования производитель, заводской номер и срок ввода в эксплуатацию. И так далее... Связи тоже имеют специфику "рабочие место - оборудование" - это признак, где физически станок находится, а "работник - рабочие место" - это уже запись в журнале рабочего времени (сегодня в одном цеху, а завтра в другом).

По сути то, что ты хочешь - это базы SAP и 1С.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы