errorrishe: (Default)
[personal profile] errorrishe
на работе временами у меня случается проблема
у нас слегка дофига таблиц в базе данных ( ну так больше 5K ). А я последнее время занимаюсь нашим bpm и часто приходиться вникать что и как и откуда выковырять - и не только для себя но и для консультантов
хочеться штуковину которая могла бы мне помочь вот таким образом
- набрал имя поля - увидел все места в которых он используется как foreign key, возможно даже более сложные связи - типа вот это можно получить от сюда использовав такие два ключа
- показать историю изменения схемы и увидеть в каком бранче что происходит
- просто супер быстро искать по именам полей и других сущностей с поддержкой всяких wild cards
Подъебка в том что использовать оркакл как источник данных - плохая идея. Тк хочется понимать git контекст тоже
Хорошая новость - все метаданные есть красиво описанные в db-agnostic формате (бггг xml конечно же)
Вопрос собственно - из чего это стоит пробовать лепить... Есть желание для этого не использовать java ( ибо заебало)
быстро искать по тексту можно lucen' ом но тут все усложняется прикольными данными и желанием понимать реляционную структуру в процессе поиска. Короче я пока еще не понял как к этому подступиться.

Описание бестолковое и путанное, это я для себя пытаюсь формализовать задачу в общем то, надеюсь может что то в голову придет в процессе написания.

Date: 2016-09-19 12:12 am (UTC)
From: [identity profile] qvb.livejournal.com
У нас есть такая штука, причем она еще и работает с тэгами, показывает lineage, юзеры ставят свои рейтинги и много всякого еще, но эта система closed source и сделана "для себя". Может мы со временем сделаем на ее основе коммерческий сервис, но это в неопределенном будущем.

Но сделать такую штуку довольно много работы, это проект для небольшой группы. В принципе можно наваять что-то простенькое в одно лицо, но тут многое упирается просто в обьем работы.

Date: 2016-09-19 12:48 am (UTC)
From: [identity profile] errorrishe.livejournal.com
да объем работы тоже пугает
думаю что то на коленке попробовать соорудить, посмотрю как пойдет

тут самое интересное как это организовать в плане структур данных. Если будут силы попробую что то по прототипировать днями

Date: 2016-09-19 01:08 am (UTC)
From: [identity profile] qvb.livejournal.com
Со структурами данных как раз все просто - запихиваем все эти метаданные в SQL и начинаем строить нужный функционал. Обьем этих данных крайне невелик, и можно делать почти что угодно не беспокоясь особо о производительности.

Люсин тоже можно сбоку приспособить для свободного поиска, но это нужно только если объёмы данных достаточно большие.

У нас на такой системе сидят тысячи юзеров, и данных там сотни тысяч датасетов, и все работает ОК.

Date: 2016-09-19 01:23 am (UTC)
From: [identity profile] errorrishe.livejournal.com
да, данных не то чтобы сильно много
полная одна дата модель что то типа 30 мегабайт, комитов на нее не то чтобы сильно дохера
были мысли что может вообще это хозяйство в памяти держать - даже с сиквелом не связываться. но то такое, засунуть в inoDB тоже проблемой не будет. Даже не уверен что парсилку надо многопоточной делать, ну что такое даже гигабайт другой с ssd прочитать ..

Date: 2016-09-19 01:29 am (UTC)
From: [identity profile] qvb.livejournal.com
SQL просто удобен развитым функционалом - широкие возможности для весьма замысловатых queries, а такие обьемы данных он все равно будет в памяти держать. Смысла нет изобретать что-то свое когда стандартная база все прекрасно сделает.
Тем более что всяких тулзов и UI controls для сиквела - чуть более чем дофига. Плюс репликация и прочие радости продакшена.

Date: 2016-09-19 02:08 am (UTC)
From: [identity profile] errorrishe.livejournal.com
да умом понимаю что база как хранилище будет норм, но жаба просит извращений
но она уступит если станет понятно что иначе ни как )

Date: 2016-09-19 02:16 am (UTC)
From: [identity profile] qvb.livejournal.com
Ну если тянет на подвиги - то мешать благородному порыву не следует :-)

Хотя можно напомнить что 80% проблем в софтверном деле начинаются с идеи "а давайте мы что-то этакое запилим вместо стандартных средств" :-)

Date: 2016-09-19 02:39 am (UTC)
From: [identity profile] errorrishe.livejournal.com
почти уболтал на то что бы все в тупую залить в базу
заебенить одну денормализированную таблицу с кучей индексов по всем и вертеть как хочу.

Date: 2016-09-19 02:45 am (UTC)
From: [identity profile] qvb.livejournal.com
Я бы где-то так и делал. Денормализованная таблица с индексами и все. Поверх можно легко прицепить OData API, и можно ваять требуемый UI на ангулар или подобном.

Date: 2016-09-19 03:14 am (UTC)
From: [identity profile] errorrishe.livejournal.com
о посмотрю на этот OData API, спасибо
заодно будет новый ангулар или реакт палочкой потыкать

Date: 2016-09-19 03:29 pm (UTC)
From: [identity profile] zeit-raffer.livejournal.com

А чем лучше денормализованная таблица по сравнению с той же sql information schema? Чтобы джойнов не считать, а только фильтровать?

Date: 2016-09-19 04:46 pm (UTC)
From: [identity profile] bvlb.livejournal.com
Если сделать дамп схемы в текстовом виде, то многие вещи можно просто грепом делать, и быстро.

Date: 2016-09-19 04:51 pm (UTC)
From: [identity profile] bvlb.livejournal.com
Если искать более сложные вещи, я бы тупо распарсил это в граф (у вас он слабо связный) и на питоне сам искал по нему что надо. с 5К узлами любой поиск будет мгновенен тупо перебором.

Date: 2016-09-19 05:57 pm (UTC)
From: [identity profile] errorrishe.livejournal.com
Ага, во многих случаях это сильно быстрее. Правильно выбрал индексы и тогда это хорошо работает( можно жить без единого full scan)

Date: 2016-09-19 10:44 pm (UTC)
From: [identity profile] errorrishe.livejournal.com
ну вот это примерно в сторону моей первичной идеи
есть правда осложнения- имеются сотни версий этого графа ( модель то меняеться и местами точиться под клиентов. В среднем оно сливается в мастер но именно что в среднем, интересно понимать и разные версии )

Profile

errorrishe: (Default)
errorrishe

January 2026

S M T W T F S
    123
4567 8910
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 23rd, 2026 07:58 pm
Powered by Dreamwidth Studios