|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
xenixавторДа, могут быть доработки какие-то изредка. Вы раскроете разницу между программированием и доработкой? 1) Доработка не всегда требует программирования. 2) Доработка не перманентное мероприятие. Если она требует программирования, то это не постоянное программирование, как в подходе, предложенном автором. Так что, именно постоянное программирование, а не просто доработка. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:34 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
xenixПонеслась философия Скорее всего, называть редкостную ахинею философией все еще преждевременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:37 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
авторСкорее всего, называть редкостную ахинею философией все еще преждевременно. Вы правы. Может, правильнее сказать "софистика, пастор, софистика" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:43 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scf, Как видите, подключились специалисты по формированию из темы того самого болота)) Это неизбежно, к сожалению. Так получается много страниц, из которых более половины лишние. Это не беда, я думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:59 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
mad_nazgul У-у-у вы даже ООП не знаете. Классический пример с геометрическими фигурами. Есть абстрактный класс "Фигура" у которой есть метод "нарисовать". Есть потомки "квадрат", "круг", "треугольник". У которых переопределен метод "нарисовать". Данные разные, классы разные, используются одинаково! Умник, попробуй эти данные после рисования куда-нибудь СОХРАНИТЬ, а потом проиндексировать и ПОИСКАТЬ фигуры, входящие в заданую область. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:56 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfКот Матроскин, А, простите, я не обратил внимания, что вы тот самый человек альтернативной адекватности, который пишет ответы, не читая посты. Давайте я вас буду просто игнорировать. Не торопитесь игнорировать замечания ветеранов форума Ваш пример как раз из области документно ориентированных NoSQL СУБД, на что Вам намекал Кот Матроскин. Кроме базы полисов, есть много других задач: бухгалтерия, склад, и т.п. Там Ваш подход явно не прокатит. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 15:57 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
mad_nazgulНе знаю, просто всегда когда перед ORM ставиться задача чуть сложнее прочитать несколько строк из таблицы. Тут же возникают ХП. Ну и что же в этом прохого, в чём проблема ? Объекты Hiber (или кто ещё) легко может читать и из процедур, и можно вообще не использовать Hiber именно в этом отдельном месте. mad_nazgul1) ХП не относиться к РМД. Это процедурное расширение РМД. Напомню, что РМД расшифровывается как "реляционная модель ДАННЫХ". Код не обязан подчиняться модели ДАННЫХ. Всё, на твоём уровне развития я с тобой общаться не хочу. Неинтересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 16:01 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
авторORM - это, конечно, хорошо, и при правильном использовании несет много пользы, но правильно использовать его очень тяжело, а при неправильном он генерит очень неоптимальные запросы. Правильно его использовать ОЧЕНЬ ЛЕГКО. Ну, ладно, просто легко. С GRAILS например -- очень легко. Просто ключ тут в слове "правильно". А это значит -- не забивать гвоздь отвёрткой, а шуруп не закручивать молотком. авторКто-нибудь знает книжку по данному вопросу? или хотя бы ключевые слова? Я не понял, о чём это. если хочешь -- уточни, может скажу книгу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 16:04 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfКлассический подход - (местами) нормализованное хранилище, со связами один-ко-многим и многие-ко-многим через таблицы, местами денормализованное для повышения быстродействия плюс тщательно затюненные индексы для того, чтобы все нужные запросы работали быстро. Забудь про выделенное, это уже давно неработающий бред. Давно неправда. Денормализация никогда не приводит к повышению быстродействия, потому что она приводит к росту физического объёма данных, а оно ведёт к коллосальному падению производительности. Сейчас решения в VLDB строятся наоборот на гипернормализации и сжатии на физичесом уровне хранения данных. scfАльтернатива? Одна таблица с тремя полями: id, номер полиса, clob с json-ом. Плюсы: ... Проблемы и пути их решения: На самом деле проблем только одна -- это не база данных, не хранилище данных, а склад данных. Данные в таком складе невозможно обрабатывать средствами СУБД, внутри БД. Почти все описанные тобой проблемы -- это следствие этого. Фактически ты вообще предлагаешь закинуть всё в некое хранилище, и не решать ни одну из проблем из области использования этих данных -- поиск и сортировки как делать -- ты не знаешь, аналитику предлагаешь делать во внешней БД (OLAP), в которую ты даже не знаешь, как эти данные выгружать. А какую ж из задач по созданию системы для хранения и обработки этих данных ты тогда решил ? Простую вставку данных? Но она и на ORM + RDBMS решается неплохо. Я тебе сообщу о ещё одной проблеме, которую ты не видишь -- это проблема консистентности (т.е. целостности данных). Кто будет проверять твой JSON перед вставкой в БД ? БД этого не сделает. А в JSON формат данных свободный, можно и добавить лишний атрибут, и не добавить обязательный, а обнаружишь ты это только на уровне приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 16:16 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfЯ пришел к выводу, что классический/школьный подход к разработке БД а-ля "нормализуйте все, нафигачьте справочников, пишите сложные запросы В общем, как резюме к топику. У тебя в голове -- каша. Нет порядка, нет чёткого понимания, что где и зачем. Не обижайся -- это нормально, это на каком-то этапе у всех так. Тебе сейчас надо не делать какие-то выводы, а просто поработать так, как все, в стандартных технологиях. Поднабраться опыта, понять, проанализировать, потом уже делать выводы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 16:21 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
MasterZivДенормализация никогда не приводит к повышению быстродействия, потому что она приводит к росту физического объёма данных, а оно ведёт к коллосальному падению производительности. Сейчас решения в VLDB строятся наоборот на гипернормализации и сжатии на физичесом уровне хранения данных. wikiДенормализация (англ. denormalization) — намеренное приведение структуры базы данных в состояние, не соответствующее критериям нормализации, обычно проводимое с целью ускорения операций чтения из базы за счет добавления избыточных данных.Не? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 16:45 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
MasterZivДенормализация никогда не приводит к повышению быстродействия, потому что она приводит к росту физического объёма данных, Это неправда - нормализованные данные запросто могут занимать больший объем, нежели ненормализованные. Задача нормализации вообще не в том, чтобы экономить место - это всего лишь необязательный сопутствующий бонус. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 16:49 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Infernal V. RavenMasterZivДенормализация никогда не приводит к повышению быстродействия, потому что она приводит к росту физического объёма данных, а оно ведёт к коллосальному падению производительности. Сейчас решения в VLDB строятся наоборот на гипернормализации и сжатии на физичесом уровне хранения данных. wikiДенормализация (англ. denormalization) — намеренное приведение структуры базы данных в состояние, не соответствующее критериям нормализации, обычно проводимое с целью ускорения операций чтения из базы за счет добавления избыточных данных.Не? А что неправильно ? Написано, что ЦЕЛЬ денормализации -- УСКОРЕНИЕ. Это то, для чего её делают. Но это не значит, что если сделали, то достигли цели. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 17:19 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Кот МатроскинMasterZivДенормализация никогда не приводит к повышению быстродействия, потому что она приводит к росту физического объёма данных, Это неправда - нормализованные данные запросто могут занимать больший объем, нежели ненормализованные. Задача нормализации вообще не в том, чтобы экономить место - это всего лишь необязательный сопутствующий бонус. Ну-ка расскажи подробнее... Пока -- смешно. Ну да, в каких-то самых простейших случаях так может быть, типа табличка в две строчки, и 20 справочников. Но стоит ли об этом исключительном случае говорить ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 17:22 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
MasterZivКот Матроскинпропущено... Это неправда - нормализованные данные запросто могут занимать больший объем, нежели ненормализованные. Задача нормализации вообще не в том, чтобы экономить место - это всего лишь необязательный сопутствующий бонус. Ну-ка расскажи подробнее... Пока -- смешно. Ну да, в каких-то самых простейших случаях так может быть, типа табличка в две строчки, и 20 справочников. Но стоит ли об этом исключительном случае говорить ? Пожалуйста - классический пример нарушения 1 НФ с перечислением ID товаров(скажем, пятизначных) в строчку через запятую в таблице заказа. Нормализовав это безобразие, практически наверняка получим увеличение обьема данных- причем чем больше строк будет в таблице заказов и чем больше товаров в среднем в заказе, тем большее увеличение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 17:45 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfИ, разумеется, что не хотелось бы услышать :) "КГАМ", "читай маны", "всё бред" Ну, я вот уже лет 10 делаю довольно сложные и требовательные к производительности проекты примерно таким образом. Особых проблем нет, есть несколько выработавшихся практик, достаточно простых. Даже несколько раз доклады делал на разных конференциях. Как показывает опыт, практически невозможно объяснить классическим разрабочикам СУБД, чем такая схема удобнее и проще - отрицание происходит на уровне "так делать нельзя, даже думать в эту сторону грешно, нафиг-нафиг", так что проще и не пытаться ) А вот программисты предметной области легко такой подход принимают и начинают развивать. Сложности начинаются при потребности в сложных взаимосвязях между сущностями (впрочем, при нормальном проектировании предметной области это бывает крайне редко), при требовании сложных произвольных поисков (хотя тут уже нужен OLAP, а не OLTP), при попытке использовать стандартные генераторы отчетов (но там тоже есть свои решения, разумеется). Разумеется, такая СУБД остается вполне реляционной, всякие фразы про NoSQL тут совершенно не при чем. Кстати, в 90% случаев подобные СУБД формально нормализованы (так как блоб с точки зрения СУБД является атомарным аттрибутом и только на уровне ApplicationLayer становится не атомарным), остальные формы сверх первой там тоже соблюдаются. И если удерживать в голове хотя бы первую форму, то проектирование такой СУБД становится гораздо проще. Из подсказок - обязательно в БД для каждого блоб-поля хранить версию его формата. Иначе обновление структуры станет сложным (хотя все равно проще, чем для обычного перенормализованного решения). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 18:03 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Ранее MasterZivДенормализация никогда не приводит к повышению быстродействия Теперь MasterZivНаписано, что ЦЕЛЬ денормализации -- УСКОРЕНИЕ. Это то, для чего её делают. Но это не значит, что если сделали, то достигли цели.Т.е. добиться таки можно? Чаще всего, по-опыту, достигают. Раскрой первую мысль. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 18:09 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
DPH3, А что со справочниками? Вы добавляете данные из них в блоб, грузите их отдельно по id (с кешированием), выносите айдишники за блоб и джойните при выборке? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 19:06 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfDPH3, А что со справочниками? Вы добавляете данные из них в блоб, грузите их отдельно по id (с кешированием), выносите айдишники за блоб и джойните при выборке? ))) Пожалуйста, определитесь с терминологией. Многие люди здесь, если читают что-то непонятное, считают, что дело не в них, и обижаются на того, кто пишет что-то непонятное. А я вот считаю, что если что-то не понимаю, то дело во мне. И стараюсь понять, задавая вопросы. Вы много раз использовали термин "справочник", но ни разу не пояснили - что это такое. Дайте ясное определение. В некоторых системах, например, может быть Справочник сотрудников, Справочник товаров и т.п. Вы тоже называете справочником данные о людях? Или нет? И как Вы называете другие элементы структуры данных, которые (по Вашему) не справочники? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 20:00 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Бредятина, Ну академическое определение справочника я не дам :) И вообще, вам должно быть известно, насколько это скользкая тема, что считать справочником, а что нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 20:09 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfБредятина, Ну академическое определение справочника я не дам :) И вообще, вам должно быть известно, насколько это скользкая тема, что считать справочником, а что нет. Но, Вы же спокойно используете термин. Вы понимаете, что Вас не понимают?)) Давайте вместе определимся, а заодно посмотрим нужен ли этот термин вообще. Похоже Вы не читаете материал как раз и по этому вопросу(( ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 20:11 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
MasterZivmad_nazgulУ-у-у вы даже ООП не знаете. Классический пример с геометрическими фигурами. Есть абстрактный класс "Фигура" у которой есть метод "нарисовать". Есть потомки "квадрат", "круг", "треугольник". У которых переопределен метод "нарисовать". Данные разные, классы разные, используются одинаково! Умник, попробуй эти данные после рисования куда-нибудь СОХРАНИТЬ, а потом проиндексировать и ПОИСКАТЬ фигуры, входящие в заданую область. Точно, вы в ООП вообще ни в зуб ногой. Все решается для объекта созданием общих методов "сохранить_в_БД", "прочитать_из_БД" А для БД создания приблизительно такой структуры: Фигура: ID Тип_Фигуры_ID Тип: ID Название Точка: ID Фигура_ID Координата_X Кордината_Y При реализации методов объекты сохраняют данные которые у них есть и считывают их из БД. Почему нельзя структуру БД напрямую использовать в ООП? Потому что это не удобно! В программе гораздо удобнее использовать конкретные объекты (Круг, квадрат, треугольник и т.д.), а вот для сохранения нужна декомпозиция данных. Т.е. из каких данных состоит объект фигура. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 07:17 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
MasterZivНу и что же в этом прохого, в чём проблема ? Объекты Hiber (или кто ещё) легко может читать и из процедур, и можно вообще не использовать Hiber именно в этом отдельном месте. Можно, только зачем? Если persist для этих объектов не сделаешь (ну или опять же ч/з ХП) Лучше сразу работать с SQL. Т.е. ORM вынуждает кроме "прослойки" на стороне приложения, иметь еще "прослойку" на стороне СУБД. Когда можно ограничится только стороной приложения. MasterZivmad_nazgul1) ХП не относиться к РМД. Это процедурное расширение РМД. Напомню, что РМД расшифровывается как "реляционная модель ДАННЫХ". Код не обязан подчиняться модели ДАННЫХ. Всё, на твоём уровне развития я с тобой общаться не хочу. Неинтересно. Вот об этом и речь! Код ХП не относиться к РМД, т.к. он процедурный. А вот, например, запрос (SELECT) относиться - он декларативный и работает в рамках РМД. Хотя и то, и то код. ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 07:27 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
mad_nazgulКод ХП не относиться к РМД, т.к. он процедурный. А вот, например, запрос (SELECT) относиться - он декларативный и работает в рамках РМД.какая редкостная чушь. 1. Код ХП может быть написан только с использованием оператора SELECT, 2. язык SQL может поддерживаться не только в РСУБД, но и в СУБД, основанных на других моделях данных, например в СУБД Cashe, 3. некоторые РСУБД не поддерживают язык SQL. язык SQL не зависит от модели данных, это язык написания запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 14:04 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
egorych1. Код ХП может быть написан только с использованием оператора SELECT, PL/SQL и TSQL - процедурные языки, точно так же как и xBase. В частности уже в FoxPro был возможность выполнять SQL команды, но это не делает его декларативным ЯП. egorych2. язык SQL может поддерживаться не только в РСУБД, но и в СУБД, основанных на других моделях данных, например в СУБД Cashe, Вообще то SQL был специально создан под РМД. Остальные, просто "натянули глобус" egorych 3. некоторые РСУБД не поддерживают язык SQL. язык SQL не зависит от модели данных, это язык написания запросов. Зависит. В некоторых СУБД могут использоваться команды SQL. А так почитайте на досуге стандарт SQL ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2014, 15:06 |
|
|
start [/forum/topic.php?fid=32&msg=38730570&tid=1539997]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 275ms |
0 / 0 |