Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 10 11 12 13 14 [15] 16 17 18 19   вперед  Ctrl
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
hVostt
softwarer
Напоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а.


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

Но до меня начало таки доходить в чём смысл. Дело в патенте.

Да, я уже встречался с таким. Когда человек патентует наколеночное решение, элементарный алгоритм на экселе, который любое школо-ло напишет за пару дней, но оно уже в продакшене и в крупной компании. А потом тупо ходит и снимает сливки. Это не шутка, в моей практике я с этим сталкивался.

И тогда всё становится на свои места. Все эти квинтеты -- не более чем пыль в глаза. Тут не нужно ума палата, что увидеть, что решение -- хреновое по всем фронтам, и это ещё мягко сказано.
Какие еще патенты на алгоритмы? Это только в штатах.
8 сен 19, 22:00    [21966394]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
Siemargl,

При чем тут штаты? У нас тоже есть патентное бюро.
8 сен 19, 22:29    [21966402]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
iOracleDev
А что он запатентовал и где? Иерархические СУБД известны давно, закостылить разрешение отношений сущностей и множественное наследование, скрестить с EAV и попытаться запихнуть в реляционную субд, все это уже давно в том или ином виде делалось, он не пионер, если покопаться в дореляционной эпохе и в ее начале, таких опубликованных в виде статей материалов найдется вагон и маленькая тележка, по идее его патент не должен был быть принят, нельзя патентовать общеизвестные вещи и вещи которые публиковались ранее.


В статьях на хабре они об этом писали.

Собственно я реально больше не могу найти ни одного вменяемого объяснения этой вакханалии.
8 сен 19, 22:32    [21966403]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
hVostt,

Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице.

Кто сказал про таблицу? В постановке задачи про таблицу ничего нет: Как назвать эту структуру и подход, основанные на EAV?.

Всё несколько хуже иначе, чем вам это кажется на первый взгляд. И я сейчас не о патентной паранойе (не уподобляйтесь хабрадолдонам, прошу).

Обсуждаемый подход хранит квинтеты на носителе (диске, флэшке, RAM), сплошным ковром. Их можно хранить в порядке возрастания ID, чтобы сэкономить на одноименном индексе. Также на диске хранится подобие индекса по двум значениям квинтета: Entity+Attribute, Attribute+Value, чтобы можно было быстро найти физический адрес квинтета на том ковре, не зная ID, но имея ID его родителя или ID типа и значение.

Всё это обслуживается ядром, функционал которого примерно на 98% уже сделан в любой РСУБД, поэтому эмуляция этого подхода была сделана в РСУБД. Это временно — прототип, сделанный для подтверждения концепции.
Далее мы перепишем ядро какой-то свободной СУБД: выкинем лишнее и допишем совсем немного (даже скорее соберем из других мест СУБД).

А вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения.
8 сен 19, 22:53    [21966409]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58418
Блог
drynny
А вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему.

Отличное предложение. Форум видел многих энтузиастов-изобретателей, и подобное предложение звучало не раз - но Вы имеете шанс стать первым, кто таки действительно придёт и покажет свои успехи.
8 сен 19, 22:59    [21966412]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
Патчик на свой DDL.

CREATE TABLE quintet(
    id NUMBER PRIMARY KEY, 
    up NUMBER NOT NULL, -- верхний уровнь подчинения. Parent.
    typ NUMBER, -- тип данных ( 0 - аналог NULL?)
    ord NUMBER, -- порядок записей внутри.... эээ... чего-то там внутри
    val VARCHAR2(4000) -- архитекторы рекомендуют 127 символов (!)
);

-- Quote:>> Для навигации в этом списке построены 3 упорядоченных указателя – индексы: ID, Entity+Attribute, Attribute+Value

CREATE INDEX .... ? -- первичный авто-генерируется синтаксисом PRIMARY. По EA, AV - непонятно.  

CREATE INDEX .... --   я могу идентифицировать только  Value.   Что такое  "attribute" ? Где в таблице этот чортов attribute?
-- это композит? из нескольких полей?

У меня вот так:
CREATE TABLE init (
  id int(4) UNSIGNED NOT NULL,
  t int(4) UNSIGNED NOT NULL,
  up int(4) UNSIGNED NOT NULL,
  ord int(4) UNSIGNED NOT NULL,
  val varchar(127) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

ALTER TABLE init
  ADD PRIMARY KEY (id),
  ADD KEY t_val (t,val),
  ADD KEY up_t (up,t);

ALTER TABLE init
  MODIFY id int(4) UNSIGNED NOT NULL AUTO_INCREMENT;
8 сен 19, 23:01    [21966414]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41808
drynny, ok я поменяю порядок колонок.

А имена почему такие сокращенные? Я с вашего позволения сохраню свои. Мне они... более информативны.

И что MySQL является вашей основной платформой разработки? КМК это не наилучший выбор.

ADD KEY t_val (t,val) - это я так понимаю модный аналог CREATE INDEX...
8 сен 19, 23:10    [21966418]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6269
hVostt
Siemargl,

При чем тут штаты? У нас тоже есть патентное бюро.
У нас и в Европе алгоритмы не патенуются
8 сен 19, 23:21    [21966420]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41808
drynny
mayton
hVostt,

Да мне тоже непонятно зачем данные и метаданные нужно хранить в общей таблице.

Кто сказал про таблицу? В постановке задачи про таблицу ничего нет: Как назвать эту структуру и подход, основанные на EAV?.

Всё несколько хуже иначе, чем вам это кажется на первый взгляд. И я сейчас не о патентной паранойе (не уподобляйтесь хабрадолдонам, прошу).

Обсуждаемый подход хранит квинтеты на носителе (диске, флэшке, RAM), сплошным ковром. Их можно хранить в порядке возрастания ID, чтобы сэкономить на одноименном индексе. Также на диске хранится подобие индекса по двум значениям квинтета: Entity+Attribute, Attribute+Value, чтобы можно было быстро найти физический адрес квинтета на том ковре, не зная ID, но имея ID его родителя или ID типа и значение.

Друг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf
подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли.
Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее
свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для
блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено
в механику движков.

А ты что? Пытаешся еще и одним махом решить задачу ХРАНЕНИЯ? Это вообще капец нерешаемая задача
особенно в условиях когда работаем с документооборотм произвольной системы Х в которой нет ни таблиц
ни каких статистических свойств ни закономерностей. Есть просто простыня атрибутов и значений.
8 сен 19, 23:31    [21966422]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
Siemargl
У нас и в Европе алгоритмы не патенуются


Техническое решение, не сам алгоритм.
8 сен 19, 23:35    [21966428]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41808
Просто как я услышал про сортировку с целью оптимизации какого-то там хранения - мой ДБА-шный мозг
не выдержал. Пока грелась идея об альтернативе ЕАВ - мне было понятно. Типизация там.
Дерево - тоже понятно. Метадата как часть основных данных.

Но когда афтор говорит об альтернативных RAM, флешках ... тут мне стало плохо и почему-то
вспомнились создатели FVMAS, Стебелек и прочие Кроносы.

Вобщем обозначте приоритеты вашей системы. Главный приоритет - универсализм мы все поняли
и вроде-бы даже никто и не поспорил. Конструкторы там...

Вобщем вот в таком вот аспекте.
8 сен 19, 23:37    [21966430]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
d7i
Member

Откуда:
Сообщений: 445
Знатный холивар получился...
Пора завязывать.
8 сен 19, 23:41    [21966431]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
drynny
А вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения.


Хм..

drynny
не уподобляйтесь хабрадолдонам, прошу


Хех, ну лан )))


Я понял. Вы делаете свою СУБД. Сейчас у вас есть DML, и визуальное проектирование "движком", а там не за горами и DDL.

Понял-понял. Профитами тут не пахнет, решается задача с нуля придумать способ хранения схемы и данных.

Ну просто непонятно, зачем это? Ведь всё это можно делать и в любой СУБД. Создавать таблицы, добавлять атрибуты и с помощью DDL и с помощью визуальных редакторов, гораздо по-мощнее вашего надо сказать. Более того, существуют средства, как из UML получить готовенькую БД, дофигища решений.

Конечно, чтобы не изобретать, вам придётся подстраваться, ODBC, JDBC и прочие интерфейсы городить. SQL опять же, ваш язык всёж нафиг никому не упёрся, как не крути. Даже NoSQL давно осознали, что SQL даже со всеми своими недостатками это маст хев и многие приделали или приделывают к себе SQL синтаксис для запросов.
8 сен 19, 23:43    [21966432]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
d7i
Знатный холивар получился...
Пора завязывать.


Да нет холивара. Клещами из парня вытаскивают информацию, раскалёнными. Только сейчас выяснилось, что речь не о способе организации данных в СУБД, а вообще в целях своя СУБД.

И пока этой СУБД в итоге не будет говорит не о чем совершенно.

Так называемый "прототип", лежащий в единственной табличке, это курам на смех, а не решение. Но может (чем чёрт не шутит), своё решение будет не так уж катастрофически сильно отставать от СУБД версий эдак 2000-ых годов.
8 сен 19, 23:47    [21966435]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41808
Еще один патчик.

CREATE TABLE quintet(
    id       NUMBER GENERATED ALWAYS AS IDENTITY,
    datatype NUMBER NOT NULL,
    parent   NUMBER NOT NULL, -- Здесь - непонятно. Обычно в деревьях существует хотя-бы 1 элемент без родителя
                                            -- это сам корень. Но соотв. констрейнт говорит нам что мы должны забить какое-то значение.
                                             -- Какое- непонятно. Что имел в виду архитектор?
    order    NUMBER NOT NULL,
    value    VARCHAR2(4000)
);

CREATE INDEX datatype_val_idx ON quintet(datatype, value); -- Даниный индекс мне непонятен. Он предполагает
                                                                                    -- смысловую нагрузку поиска в части поля datatype 
                                                                                    -- или композитного поля в том числе с значенем?

CREATE INDEX parent_datatype_idx ON quintet(parent, datatype);
8 сен 19, 23:50    [21966436]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
mayton
CREATE INDEX datatype_val_idx ON quintet(datatype, value); -- Даниный индекс мне непонятен. Он предполагает
                                                                                    -- смысловую нагрузку поиска в части поля datatype 
                                                                                    -- или композитного поля в том числе с значенем?


в данном случае тип данных это не примитив, а домен
поиск по домену, вроде понятно
9 сен 19, 00:54    [21966448]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15810
все мои вопросы и критика в связи с новой полученной информацией, кстати, снимаются :)

новая субд!
9 сен 19, 00:56    [21966450]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
mayton
А эти магические константы такие как 3 и 13 - зарезервированы?

ПОзволю свою ремарку по этому поводу....
это не константы, это обычные квинтеты, они не то что бы зарезервированы, они просто так записаны в БД.
Эти цифры указывают на тип данных (это в статьях на хабре и картинках, скопированных автором топика сюда): 3 - это number, 13 - это string
Дата Заезда будет иметь up=9

Если я правильно уловил суть, то в случае, если Вы будете создавать свою БД на основе квинтетов тип number вполне может иметь любое другое значение
9 сен 19, 07:15    [21966494]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
drynny

Собственно Многие-ко-многим будут выглядеть так:
iduptypordval
348300Гость
349300Номер
3501300Бронирование
35134800
35234900
3533513501
3553523502


Почему "Гость" имеет тип string? Из-за того, что ФИО гостя надо записать в столбец value для id=351?
Почему "Бронирование" имеет тип "number"? Вообще не смог придумать вариантов...
А даты проживания куда писать?

P.S. Ну какие же тупые эти диванные эксперты...
9 сен 19, 07:58    [21966508]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
Mr.Fontaine,

Там ошибка copy/paste.

Вот структура для бронирования с датами бронирования, заезда и выезда.

idtypeparentordervalue
1110ROOT
3300SHORT
4400DATETIME
8800CHARS
9900DATE
131300NUMBER
141400SIGNED
349300Номер
3501300Бронирование
35134800
35234900
3533513501
3553523502
356400Дата бронирования
357900Заезд
358900Выезд
3593563503
3603573504
3613583505


Картинка с другого сайта.
9 сен 19, 08:41    [21966528]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41808
Теперь "Гость" потерян.
9 сен 19, 08:55    [21966540]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 757
drynny, похоже опять copy/paste подвёл (строки с id=348 нет). ну да ладно
Плохо, что у некоторых строк столбйы value пустые....
Так ФИО гостя записывается в строку с id=353? А зачем id=351?
9 сен 19, 08:55    [21966541]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
Друг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf
подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли.
Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее
свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для
блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено
в механику движков.

А ты что? Пытаешся еще и одним махом решить задачу ХРАНЕНИЯ? Это вообще капец нерешаемая задача
особенно в условиях когда работаем с документооборотм произвольной системы Х в которой нет ни таблиц
ни каких статистических свойств ни закономерностей. Есть просто простыня атрибутов и значений.

Да, брат, штука в том, что это уже работает.

Да, в виде прототипа в самой замухрыжистой СУБД, с огромными накладными расходами, с избыточной организацией данных и прочим. Если бы не было этого прототипа и ролика и разных тестов, то твое заявление звучало бы убийственно. Но прототип есть, и заявление уже не канает. Я могу забить весь терабайтный диск квинтетными данными (с документооборотом произвольной системы Х), сделать на нём приложение и оно будет вполне сносно работать.

А теперь я постепенно буду выкидывать из СУБД ненужное (например, ограничение на размер полей неактуально и много там всего), добавлять работу с данными, которая сейчас в ядре прототипа, сокращать избыточность и менять другие вещи под себя (да-да, я знаю, о чем говорю), чтобы работало всё это всё более и более быстро.

В итоге будет уже не исходная СУБД, а тот ковер — решение твоей нерешаемой задачи.
9 сен 19, 09:01    [21966543]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41808
drynny
Да, брат, штука в том, что это уже работает.

Да, в виде прототипа в самой замухрыжистой СУБД, с огромными накладными расходами, с избыточной организацией данных и прочим. Если бы не было этого прототипа и ролика и разных тестов, то твое заявление звучало бы убийственно. Но прототип есть, и заявление уже не канает. Я могу забить весь терабайтный диск квинтетными данными (с документооборотом произвольной системы Х), сделать на нём приложение и оно будет вполне сносно работать.

А теперь я постепенно буду выкидывать из СУБД ненужное (например, ограничение на размер полей неактуально и много там всего), добавлять работу с данными, которая сейчас в ядре прототипа, сокращать избыточность и менять другие вещи под себя (да-да, я знаю, о чем говорю), чтобы работало всё это всё более и более быстро.

В итоге будет уже не исходная СУБД, а тот ковер — решение твоей нерешаемой задачи.

1) Давай я вместо ковра тебе предложу некоторые решения.

- BerkeleyDb. Это старичок от мира Unix. Работает уже давно. О нём мало кто знает в мире NoSQL что удивительно.
- Tarantool. Развитая система индексов + оптимизации для In-Memory и быстрых вставок для дискового хранилища.

Все вышеперечисленные системы должны поддерживать вторичные индексы.

2) Мне очень не нравится термин "оно будет вполне сносно работать". От него пахнет непопаданием в SLA и NFR.
Вобщем нужно его ужесточить. Акцентировать на том что система ориентирована только на документоообоот.
И не предполагает long-term transactions, и аналитики. Про консистентность тоже умолчим. Будем просто
надеятся что операции а документами будут обеспечиваться атомарностью логики основного приложения.
9 сен 19, 09:23    [21966558]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
colibrii
Member

Откуда:
Сообщений: 9
d7i
Знатный холивар получился...
Пора завязывать.


наоборот!!!

drynny
... (да-да, я знаю, о чем говорю) ...


это "квинтет головного мозга" запущенный случай, не спугните пациента, изучим его получше
9 сен 19, 09:56    [21966580]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 10 11 12 13 14 [15] 16 17 18 19   вперед  Ctrl
Все форумы / Проектирование БД Ответить