|
|
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
> Допустим мы отказались от хранения метанинформации EAV в обычной базе данных. Не надо зацикливаться на EAV. Тупая примитивная структура для ограниченного применения, никакого другого смысла в этой аббревиатуре нет. Используете другие источники данные - будете вынуждены синхронизировать их с содержимым бд. Причем, в обе стороны, как Вы понимаете. Мало штатного геморроя? > Какие то экзотические возможности есть (вроде документоориентированных субд например > CoucheDB) Никаких глобальных преференций от не-реляционных СУБД Вы не получите. Ну, может, код проще будет писать, но в итоге минусов будет больше, чем плюсов. > Да может мне и самому так удобнее будет расширять систему. Не удобнее. Проверено неоднократно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2009, 13:25 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
ASCRUS пишет: > А ее и не надо им давать в руки. В руки они получают инструмент, который > полностью контролирует их действия и работает в рамках требований к > системе, предъявляя в том числе и свои требования к знаниям и Без базару. Но этот инструмент всё равно таки в конечном итоге ВЫПОЛНИТ этот самый DDL и заблокирует БД эксклюзивно. Не, конечно же не так всё страшно, заблокирует он на только каки-то 2-3 минуты, но вот ежели в таблице 5-10 миллионов, то уже будет минут 10-20. Ну и т.д. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2009, 22:00 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
Foxluck пишет: > У нас есть проблемы с тем что у нас рел. субд оперирует четко > типизированными объектами. Так в чём проблема ? EAV может быть как строго типизированным, так и наоборот. > Да может мне и самому так удобнее будет расширять систему. Можно сказать > мой девелоперский иструмент дополнительный. > По поводу проблем многотранзакционности интересное замечание. Ну могут > быть какие то проблемы но тоже решаемые скорее всего. Так в чём проблема тогда ? Я вижу, ты полон решимости. Ну, тогда -- ВПЕРЁД ! А про все твои шишки ты ОБЯЗАТЕЛЬНО напиши сюда, нам, твой опыт будет нам уроком. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2009, 22:04 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
MasterZiv Не, конечно же не так всё страшно, заблокирует он на только каки-то 2-3 минуты, но вот ежели в таблице 5-10 миллионов, то уже будет минут 10-20. Ну и т.д. Существуют ли такие задачи, где это было бы приемлемым комромиссом? Например, разрешать модифицировать такие таблицы только DBA, а маленькие таблицы, не явлояющиеся узким местом, таблицы разрешать модифицировать некоторой категории конечных пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2009, 22:55 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
beluginMasterZiv Не, конечно же не так всё страшно, заблокирует он на только каки-то 2-3 минуты, но вот ежели в таблице 5-10 миллионов, то уже будет минут 10-20. Ну и т.д. Существуют ли такие задачи, где это было бы приемлемым комромиссом? Например, разрешать модифицировать такие таблицы только DBA, а маленькие таблицы, не явлояющиеся узким местом, таблицы разрешать модифицировать некоторой категории конечных пользователей? Вот вот... опять же можно выбрать время специальное для таких операций. Существуют ИС которые считают аналитику всю ночь. Типа завершение операционного дня. Много данных соответственно породят большое кол-во таблиц. Соотвественно в каждой таблице будет меньше данных. Операции над более маленькими таблицами проходят намного быстрее. alter table не знаю насколько это дорогостоящая операция. По сравнению с другими. EAV на 10 миллионах упадет. Меня вот что еще волнует. что метаинформацию все равно надо где то хранить. если даже мы создаем таблицы через create table. Нам нужен общий список таблиц. который генерит юзер Список имен аттрибутов который нагенерил юзер к этой таблице. Соответственно связь один ко многим между этим таблицами Но все же это не так страшно. как EAV. Этого достаточно чтобы динамически генерировать sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 17:37 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
belugin пишет: > Существуют ли такие задачи, где это было бы приемлемым комромиссом? Компромисы приемлимы везде. Маленькие базы данных, я думаю. Но главное, на самом деле (я про это забыл), что EAV НЕ ОГРАНИЧЕН в числе атрибутов, а таблица в числе колонок в любой СУБД ограничена. Про это тоже надо помнить. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 20:31 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
Foxluck пишет: > Много данных соответственно породят большое кол-во таблиц. Соотвественно > в каждой таблице будет меньше данных. Операции над более маленькими > таблицами проходят намного быстрее. Объёмы таблиц в СУБД - это не проблема. LOG (N) растёт медленно. > alter table не знаю насколько это дорогостоящая операция. По сравнению с > другими. Там зависит от сложности ALTER-а, Как правило, примерно в половине модификаций требуется физическое копирование данных в новое место. (кстати, это очень сильно по-разному в разных СУБД организованно, так что стоит озаботиться изучением конкретной СУБД, если что). > > EAV на 10 миллионах упадет. Ой, да ладно. какая разница-то ? 10 миллионов , 100 -- не суть важно. А вот попробуйте в 100 миллионную таблицу добавить поле not null.... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2009, 20:35 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
FoxluckЭтого достаточно чтобы динамически генерировать sql. Если учесть, что один объект м.б. размазан на неограниченное число таблиц, задача "динамически генерировать sql" становится не очень простой. Я в такой ситуации выбрал гибрид EAV+CSV и не жалею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 09:29 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
FoxluckХоть кто то выступил на другой стороне ASCRUS Про EAV мыши плакали и кололись но все равно жрали кактус :) Да просто "рука бойцов колоть устала...". Раз в месяц (или чаще) возникает одно и то же обсуждение EAV. И все по кругу... День сурка какой-то. Если почитать обсуждение, которое не так давно затеял сам ASCRUS, то там можно много чего посмотреть про EAV, не EAV и варианты реализации не EAV с их достоинствами и недостатками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 11:51 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
MasterZivНе, конечно же не так всё страшно, заблокирует он на только каки-то 2-3 минуты, но вот ежели в таблице 5-10 миллионов, то уже будет минут 10-20. Ну и т.д. Не знаю где как, а в Oracle, если в добавляемом столбце не проставлено значение по умолчанию, то это будет операция со словарем, а не с таблицей. т.е. 10-20 минут блокировки не будет. По поводу 5-10 млн. записей - для хранения их в EAV, потребуется таблица с 50-100 млн. строк (или больше). Обрабатывать ее, а особенно считать по ней отчеты - дело не для слабонервных. Так что не надо инсенуаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 12:02 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
BelyПо поводу 5-10 млн. записей Зависит от природы этих объектов - 10 млн. это население большого города или число операций крупной фирмы за месяц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 13:58 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
MasterZiv ASCRUS пишет: > А ее и не надо им давать в руки. В руки они получают инструмент, который > полностью контролирует их действия и работает в рамках требований к > системе, предъявляя в том числе и свои требования к знаниям и Без базару. Но этот инструмент всё равно таки в конечном итоге ВЫПОЛНИТ этот самый DDL и заблокирует БД эксклюзивно. Не, конечно же не так всё страшно, заблокирует он на только каки-то 2-3 минуты, но вот ежели в таблице 5-10 миллионов, то уже будет минут 10-20. Ну и т.д. Ну так в том то и дело, что это уже не вопрос программиста, а архитектора и аналитика. Вопрос этот должен быть поставлен и решен в ТЗ - частота и условия проведения изменения метамодели системы. В моем текущем проекте это выведено на администратора - он производит изменения метамодели и самостоятельно запускает режим синхронизации, который проводит изменение физической модели БД, перестраивает формы просмотра и изменения информации. Здесь это оставлено на усмотрение человеческого фактора, так как проект не критичный - кол-во пользователей не большое, массив информации большой, но изменения метамодели не частые. В другом же проекте сейчас разрабатывается более сложная схема, так как там планируемый ежедневный прирост информации около 4 гб и кол-во пользователей за тысячу. Здесь изменения будут происходить в многофазовом режиме: изменение метамодели->проведение синхронизации на тестовой БД->проведение тестирования->синхронизация боевой базы с остановкой на профилактические работы (на ночь). Причем здесь же еще сразу обговариваются условия, когда вне зависимости от видимости и доступности БД, работы сетевых каналов и т.д., существуют группы пользователей, которым необходимо в установленное время обеспечить продолжение их работы по вводу информации. Все это вкупе называется технологическим процессом и именно он должен определять, как, когда и насколько можно изменять структуру базы и кто может подождать, а кто должен работать дальше. Ну а если просто без привязки к конкретным условиям, что DDL зло, так как он блокирует таблицы ... то да, он зло ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 14:19 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
Кстати в догонку - в зависимости от условий проекта, DDL может и не оказывать значительных временных задержек - например в моих проектах у существующих сущностей могут добавляться новые столбцы и изменяться размер длины и разрядности поля. Смены типов или имен полей не предусмотрено. Все поля в таблице объявляются как NULL, а требование NOT NULL обрабатывается в триггере представления, через которое и работают клиентские приложения (слой таблиц для клиентов не доступен). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 14:22 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
BelyFoxluckХоть кто то выступил на другой стороне ASCRUS Про EAV мыши плакали и кололись но все равно жрали кактус :) Да просто "рука бойцов колоть устала...". Раз в месяц (или чаще) возникает одно и то же обсуждение EAV. И все по кругу... День сурка какой-то. Если почитать обсуждение, которое не так давно затеял сам ASCRUS, то там можно много чего посмотреть про EAV, не EAV и варианты реализации не EAV с их достоинствами и недостатками. Нашел эти темы пойду читать. А вообще с ваших слов стало понятно что модификация структур таблиц. довольно затратная и опасная операция. поэтому вы её так и не рекомендуете. операции с ddl. Но побольшому счету надо это проверить провести какое нибудь исследование на производительность. Типа создать случайным образом 1000 таблиц. Набить данными. По играть с alter table Случайные выборки сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 15:07 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
> изменение метамодели->проведение синхронизации на тестовой БД->проведение > тестирования->синхронизация Дружище, какая метамодель? Чтобы метамодель менялась, сначало нужно реализовать метаметамодель, а это явно не для Вас задача. Может, таки _модель_ меняется? Удивляюсь, как с такой кашей в голове вообще можно проектированием заниматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 15:18 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
авторПрошу всех высказывать аргументы только за и против. одного из подходов. Очередной поиск "универсального и правильного" решения на все случаи жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 16:42 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
guest_20040621> изменение метамодели->проведение синхронизации на тестовой БД->проведение > тестирования->синхронизация Дружище, какая метамодель? Чтобы метамодель менялась, сначало нужно реализовать метаметамодель, а это явно не для Вас задача. Может, таки _модель_ меняется? Удивляюсь, как с такой кашей в голове вообще можно проектированием заниматься. Модель в БД, метамодель сверху в своих таблицах, а каша у Вас в голове. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 16:46 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
Foxluck Типа создать случайным образом 1000 таблиц. Набить данными. По играть с alter table Случайные выборки сделать. Смысл ? У Вас в задаче пользователи будут случайным образом создавать 1000 таблиц, добавлять или изменять просто так в них колонки ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 16:48 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
> Модель в БД, метамодель сверху в своих таблицах, а каша у Вас в голове. ;) Дружище, мало просто выучить модное слово, нужно хотя бы в общих чертах представлять его смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 18:37 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
Bely пишет: > Не знаю где как, а в Oracle, если в добавляемом столбце не проставлено > значение по умолчанию, то это будет операция со словарем, а не с таблицей. > т.е. 10-20 минут блокировки не будет. Читай внимательней. Если новое поле NOT NULL ! > По поводу 5-10 млн. записей - для хранения их в EAV, потребуется таблица > с 50-100 млн. строк (или больше). Обрабатывать ее, а особенно считать по > ней отчеты - дело не для слабонервных. В чём же твоя проблема ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 18:54 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
ASCRUS пишет: > Ну так в том то и дело, что это уже не вопрос программиста, а > архитектора и аналитика. Ты думаешь, программист - это тот, кто в редакторе notepad пишет код на visual basic ? Я на этот счёт непного другого мнения. Ну да ладно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 18:56 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
ASCRUS пишет: > Кстати в догонку - в зависимости от условий проекта, DDL может и не > оказывать значительных временных задержек - например в моих проектах у > существующих сущностей могут добавляться новые столбцы и изменяться Ладно, фиг с ней, с задержкой. А как ты решаешь проблему с количеством атрибутов ? Я хочу 1000. Нет, завтра уже -- 2000. А потом - 3000. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 18:58 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
MasterZiv а таблица в числе колонок в любой СУБД ограничена. Про это тоже надо помнить. Нельзя ли приджоинить новую табличку 1:0..1 в случае исчерпания? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 21:15 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
belugin пишет: > Нельзя ли приджоинить новую табличку 1:0..1 в случае исчерпания? Да можно. Но вроде бы противники EAV боролись за простоту написания запросов. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2009, 23:29 |
|
||
|
виртуализация EAV против native create table
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Модель в БД, метамодель сверху в своих таблицах, а каша у Вас в голове. ;) Дружище, мало просто выучить модное слово, нужно хотя бы в общих чертах представлять его смысл. Есть такое понятие, как терминология. В разных направлениях один и тот же термин может означать немного разные вещи. Вот например обращение дружище к незнакомому человеку вместо Вы в моей терминологии имеет отрицательный оттенок. Думаю слово метамодель у нас с Вами тоже имеет разный смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2009, 08:24 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35923804&tid=1543307]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
171ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 290ms |
| total: | 556ms |

| 0 / 0 |
