|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Бредятина, Ничего не понял :) Как пользователи могут владеть данными, если они ими только пользуются? Вот вы написали пост - разве вы владеете его представлением в базе форума или отвечаете за сохранность этих данных, в том числе в долговременной перспективе? Расшифруйте DOA/IOA - гугль не в курсе этих аббривеатур. "Избавиться от приложений полностью" - вы сторонник подхода "пихаем всё в СУБД, включая веб-сервер"? Видел я и такие проекты... Что конкретно читать? Если вы про те 73 страницы - то пока не набрался смелости, чтобы выуживать из того болота ценные факты :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:10 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scf, Просто приведите пример, который наглядно бы показал преимущество "того, что Вы предлагаете" над "тем, что сейчас, обычно, используется". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:12 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfvadiminfo, "просто извлечь всем" - это важный критерий для database-centric архитектур, которые не очень хороши, ибо хрупки. . Основная цель ИС удовлетворение информационных потребностей. В частности, что бы просто было получать требуемую инфу. В том числе и извлеч. Т.е. это, скорее всего, важный критерей всей ИС, а не архитектур. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:13 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Бредятина, Пожалуйста, ответьте на предыдущий пост. Что касается ОП - я думал, что преимущества очевидны :). Простота в использовании со стороны приложений и быстродействие. Меня больше недостатки интересуют, насчет преимуществ я вполне в курсе. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:19 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfБредятина, Ничего не понял :) Как пользователи могут владеть данными, если они ими только пользуются? Вот вы написали пост - разве вы владеете его представлением в базе форума или отвечаете за сохранность этих данных, в том числе в долговременной перспективе? Расшифруйте DOA/IOA - гугль не в курсе этих аббривеатур. "Избавиться от приложений полностью" - вы сторонник подхода "пихаем всё в СУБД, включая веб-сервер"? Видел я и такие проекты... Что конкретно читать? Если вы про те 73 страницы - то пока не набрался смелости, чтобы выуживать из того болота ценные факты :-) 1) Я сказал потребители - опять невнимательность. Вы что хотите сказать, что человек не владеет велосипедом, который купил????? 2) А разве здесь не РСХОД?)) Тогда, конечно, не владею. 3) Архитектура, ориентированная на данные. Гугль не обладает знаниями в области теории и проектирования баз данных. Но по IOA (... на информацию) материал, конечно, есть. См. соседнюю тему. Не ленитесь. 4) Болото создают те, кто не хочет обсуждать вопросы по существу, но хотят, тем не менее, что-то написать. Это неизбежность. Так что, наберитесь смелости, если действительно хотите разобраться. 5) Мне неизвестно о подходе "пихаем...". Неизвестно о том, что Вы видели. Поэтому и говорю приведите пример, демонстрирующий преимущество (или конкурентоспособность) Вашего подхода. Но, сначала четко опишите этот самый подход)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:20 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfБредятина, Пожалуйста, ответьте на предыдущий пост. Что касается ОП - я думал, что преимущества очевидны :). Простота в использовании со стороны приложений и быстродействие. Меня больше недостатки интересуют, насчет преимуществ я вполне в курсе. Ничего не понял((( Что за ОП. Я где-то написал про ОП??? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:22 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Бредятина, ОП = OP=open post Огромное спасибо за расшифровки, наконец-то нашел внемяемую литературу по проектированию хранилищ данных. Насчет преимуществ. Возьмем, например, базу страховых полисов. Полисов бывает большое кол-во типов, у каждого типа куча информации, которая в нем хранится, причем часть этой информации опциональна, причем опциональность зависит не от типа полиса, а от его данных. Итого, как можно поступить, проектируя базу данных для этих полисов? Классический подход - (местами) нормализованное хранилище, со связами один-ко-многим и многие-ко-многим через таблицы, местами денормализованное для повышения быстродействия плюс тщательно затюненные индексы для того, чтобы все нужные запросы работали быстро. Альтернатива? Одна таблица с тремя полями: id, номер полиса, clob с json-ом. Плюсы: - простота и скорость вставки и чтения полисов. никакого random io, никаких джойнов, никакой необходимости вытаскивать полис по частям, т.к. json пусть и сложен по формату, но невелик по объему - не больше 5 кб. Для пущей эффективности можно его сжимать или даже использовать двоичный формат (хотя это может быть плохим решением - см. ниже) - простота приложения, которое с этой базой работает. несколькими строчками можно достать из базы и развернуть полноценный объект полиса Проблемы и пути их решения: - справочники. Большая часть справочников не слишком велика и не обновляется оперативно, так что можно их кешировать на стороне приложения. Если обновляется оперативно - обновлять через другое приложение, которое предоставляет возможность подписки всем желающим. Если справочник реально огромен - делать селект из приложения по id. Если еще и roundtrip большой до базы... придется эти айдишники выносить из json в нашу таблицу и джойнить при извлечении полиса. - Юзер хочет список полисов, отсортированный и отфильтрованный по хитрым, юзерским критериям. Используем внешний индекс, закачивая в него данные в формате, заточенном под требования пользователя. Т.е. с данными, по которым будет идти поиск + данными, которые надо показывать в списке полисов. - Экспорт данных в другие системы? ETL уже не катит, да. Экспорт должно делать специальное приложение, которое загрузит полис, преобразует его и зальет куда надо. - Отчеты и аналитика? Если используется OLAP, то у него все равно отдельная база звездой, см. предыдущий пункт про экспорт. Если обычная база, то при ее проектировании можно учитывать только задачи аналитики - это сильно упростит задачу. Если данных реально много и юзер может подождать несколько минут, то из исходной базы данные отлично переливаются в Hadoop. Проблемы, которые я не уверен, как решать: - Consistency. Поиск может не возвращать свежайшие данные, экспорт будет экспортировать не совсем снапшот(частично решается версионностью записей с таймстампом) - Управление данными. Уже не посадишь sql-щика вычищать мусор из базы. И если данные в классической СУБД почти самодокументируемы, т.е. следующее поколение разработчиков, в теории, сможет их использовать, то json, а, тем более, двоичный формат потребует тщательного документирования. О том, нафига создавать все эти проблемы, а потом их решать: Масштабируемость. Производительность поиска, ETL, отчетов больше не зависит от машины(ах), на которых стоит оракл. Для многих задач время отклика или пропускную способность можно улучшать линейно от кол-ва задействованных машин. Фух :) Надеюсь, это внесет какую-то ясность. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:56 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
авторРасшифруйте DOA/IOA Подозреваю, что сэр Бредятина подразумевает Data Oriented Architecture и Information Oriented Architecture ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 10:57 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scf шансом сломать любое из них при любом изменении характера данных в базе, необязательно её схемы. Так что - редкие релизы и обширнейшее интеграционное тестирование. Практичнее изолировать базу за слоем API, сделанном или на хранимках, или на приложениях - "переходниках". Можно пример "изменения характера данных", которое неизбежно сломает приложение, но от которого спасет "слой API"? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:05 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
А, насчет трех полей я погорячился - еще будут нужны поля для версионности и экспорта. дата создания, дата последнего изменения, номер версии и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:05 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Кот Матроскин, "Неизбежно" - неудачное слово. Простейший пример - если мы добавили новое поле в таблицу, с дефолтом разумеется, чтобы инсерты не сломать. А приложение по этой таблице делало select * from ... Чем не повод сломаться? Пример поинтереснее - мы решили добавить в базу новый тип полисов. Теперь любое приложение, которое селектит по этой базе, надо перетестировать - как оно себя поведет с этим новым типом? API отличается тем, что может дать более жесткие гарантии. Или хотя бы более четкие гарантии. Насчет набора возвращаемых данных, насчет характера этих данных. И если что, то можно подпилить слой API, чтобы даунстрим не заметил разницы, пока они не смогут мигрировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:11 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfКот Матроскин, "Неизбежно" - неудачное слово. Простейший пример - если мы добавили новое поле в таблицу, с дефолтом разумеется, чтобы инсерты не сломать. А приложение по этой таблице делало select * from ... Чем не повод сломаться? Никогда не видел клиентского приложения, которое бы могло сломаться от select *. Это на какой библиотеке доступа такое возможно? Ну так не пишите в приложении select *, если боитесь этой конструкции - при чем тут API? scfПример поинтереснее - мы решили добавить в базу новый тип полисов. Теперь любое приложение, которое селектит по этой базе, надо перетестировать - как оно себя поведет с этим новым типом? И как тут спасет API? И как тут спасут Ваши JSON'ы? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:22 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Кот Матроскин, А, простите, я не обратил внимания, что вы тот самый человек альтернативной адекватности, который пишет ответы, не читая посты. Давайте я вас буду просто игнорировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:25 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfДавайте я вас буду просто игнорировать. Не могу Вам в свою очередь этого обещать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:31 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Кот МатроскинscfДавайте я вас буду просто игнорировать. Не могу Вам в свою очередь этого обещать Сейчас цветут многолетние травы, и они могут, через аллергические рецидивы способствовать обострению дискуссий, это также необходимо учитывать на уровне потенциальных угроз достижению целей. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:36 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfБредятина, ... Фух :) Надеюсь, это внесет какую-то ясность. Конечно, внесло) "- Юзер хочет список полисов, отсортированный и отфильтрованный по хитрым, юзерским критериям. Используем внешний индекс, закачивая в него данные в формате, заточенном под требования пользователя. Т.е. с данными, по которым будет идти поиск + данными, которые надо показывать в списке полисов." Это - бесконечное программирование, как и в случае использования реляционных систем. Потребитель даже полис по фамилии владельца не сможет получить без программиста))). Но, когда, наконец-то, получит, то это будет "быстрее").. Для начала, если уж Вы говорите об "одной таблице", подумайте об одной таблице со всеми полями (всеми свойствами полисов всех типов), а не с тремя или десятью)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 11:43 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Бредятина, Насчет поиска - увы, это неизбежно. Для фильтрации по новому полю нужно как минимум писать новый запрос, так что доработки неизбежны. Плюс индексы, плюс доработка гуя, плюс много чего еще. "Все данные в одной таблице" а-ля денормализация - очень популярный способ упрощения базы, НО плохо применим к отношениям один-ко-многим. В итоге появляются кадавры Fio1, Fio2, Fio3 и в итоге упираются в макс. кол-во столбцов в таблице. Плюс без пол-литры не поймешь, какие поля в данной строке используются, а какие не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:12 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfБредятина, Насчет поиска - увы, это неизбежно. Для фильтрации по новому полю нужно как минимум писать новый запрос, так что доработки неизбежны. Плюс индексы, плюс доработка гуя, плюс много чего еще. "Все данные в одной таблице" а-ля денормализация - очень популярный способ упрощения базы, НО плохо применим к отношениям один-ко-многим. В итоге появляются кадавры Fio1, Fio2, Fio3 и в итоге упираются в макс. кол-во столбцов в таблице. Плюс без пол-литры не поймешь, какие поля в данной строке используются, а какие не очень. Итак, Вы предлагаете постоянное программирование (а не просто доработки), как и в случае использования реляционных систем. Это совсем плохо для потребителя, но очень хорошо для программиста, конечно)) Популярный способ упрощения какой базы? Ведь ни в одной модели данных нет никаких ограничений на количество "столбцов в таблице" или на "длину записи". Зачем говорить о том, что, пока, никому еще не удалось реализовать даже РМД? Что за отношения "один-ко-многим"??? Поясняйте конкретно на Вашем примере. Почему не поймешь какие используются, а какие нет? Что трудно сделать одно из полей как раз "классификатором записей" (вот такой системный тип добавить в Вашу СУБД)?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:32 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Понеслась философия авторИтак, Вы предлагаете постоянное программирование (а не просто доработки) Чем программирование отличается от доработки в данном случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:36 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
xenixПонеслась философия авторИтак, Вы предлагаете постоянное программирование (а не просто доработки) Чем программирование отличается от доработки в данном случае? Пожалуйста, сначала исправьте Ваше сообщение на корректное. Как к существу вопроса относится фраза "Понеслась философия"? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:40 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
Бредятина, Тоже не понял фразу про программирование и доработки. "добавить в индекс новое поле" - это как раз доработка. Конфигурации индексатора и подсистемы экспорта данных в этот индексатор. Плюс гуй. Как раз есть) Вот что гугль говорит с ходу про оракл: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:53174778859588 А просто - задачу "у полиса есть список застрахованных" в одну строчку таблицы нормально не денормализуешь. Да, формально, конечно, можно отличить используемые поля от неиспользуемых по полю "тип записи". Но визуально и без долгого вкуривания кода - навряд ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 12:53 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
scfБредятина, Тоже не понял фразу про программирование и доработки. "добавить в индекс новое поле" - это как раз доработка. Конфигурации индексатора и подсистемы экспорта данных в этот индексатор. Плюс гуй. Как раз есть) Вот что гугль говорит с ходу про оракл: https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:53174778859588 А просто - задачу "у полиса есть список застрахованных" в одну строчку таблицы нормально не денормализуешь. Да, формально, конечно, можно отличить используемые поля от неиспользуемых по полю "тип записи". Но визуально и без долгого вкуривания кода - навряд ли. Я снова и снова говорю - не торопитесь, будьте внимательнее)) Ни одна МОДЕЛЬ ДАННЫХ не накладывает ограничений на количество "столбцов в таблице" или "длину записи". Причем здесь реализации неизвестно чего? Давайте, пока, не будем рассматривать случаи, когда разработчики СХОД не смогли реализовать какую-то модель и добавили какие-то свои ограничения. Давайте от темы не отвлекаться. Если бы Вы использовали СУБД, то при "добавлении поля" в подавляющем большинстве случаев НИЧЕГО БЫ ВООБЩЕ не пришлось делать. Да, могут быть доработки какие-то изредка. А у Вас именно постоянное программирование (в лучшем случае, визуальное)... Что значит формально и визуально??? Зачем выкуривать код??? Вы же даже не пробовали это сделать)) Поэтому пока рано говорить о результате. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:02 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
авторЕсли бы Вы использовали СУБД, то при "добавлении поля" в подавляющем большинстве случаев НИЧЕГО БЫ ВООБЩЕ не пришлось делать Даже не сомневаюсь. А если под этим полем лежит "кучерявая" логика, она сама собой сгенерируется ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:04 |
|
Проектирование БД - текущее состояние дел?
|
|||
---|---|---|---|
#18+
xenixавторЕсли бы Вы использовали СУБД, то при "добавлении поля" в подавляющем большинстве случаев НИЧЕГО БЫ ВООБЩЕ не пришлось делать Даже не сомневаюсь. А если под этим полем лежит "кучерявая" логика, она сама собой сгенерируется Пожалуйста, цитируйте полностью и не вводите себя и других в заблуждение. Очевидно, что далеко не под каждым полем "лежит кучерявая логика". Да, могут быть доработки какие-то изредка. Однако, для многих приложений БД (разумеется не самых сложных) уже сейчас интерактивный интерфейс СУБД может покрывать весь функционал (то есть, ничего не нужно программировать). А еще 20 лет назад не превышал 20%. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2014, 13:19 |
|
|
start [/forum/topic.php?fid=32&msg=38729790&tid=1539997]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 281ms |
0 / 0 |