powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
25 сообщений из 454, страница 15 из 19
Как назвать эту структуру и подход, основанные на EAV?
    #39859044
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttsoftwarerНапоминает то, как писали софт в шестидесятые годы. Правда, тогда последнему идиоту не пришло бы в голову строить одну модель данных над другой, совершенно перпендикулярной. Тогда бы эти "квинтеты" реализовали бы поверх байтиков на диске, и не исключено, получили бы вполне приличное для тех лет решение, какой-нибудь предок ADABAS-а.

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

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

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

И тогда всё становится на свои места. Все эти квинтеты -- не более чем пыль в глаза. Тут не нужно ума палата, что увидеть, что решение -- хреновое по всем фронтам, и это ещё мягко сказано.Какие еще патенты на алгоритмы? Это только в штатах.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859052
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

При чем тут штаты? У нас тоже есть патентное бюро.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859053
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iOracleDevА что он запатентовал и где? Иерархические СУБД известны давно, закостылить разрешение отношений сущностей и множественное наследование, скрестить с EAV и попытаться запихнуть в реляционную субд, все это уже давно в том или ином виде делалось, он не пионер, если покопаться в дореляционной эпохе и в ее начале, таких опубликованных в виде статей материалов найдется вагон и маленькая тележка, по идее его патент не должен был быть принят, нельзя патентовать общеизвестные вещи и вещи которые публиковались ранее.

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

Собственно я реально больше не могу найти ни одного вменяемого объяснения этой вакханалии.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859056
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonhVostt,

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

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

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

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

А вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859058
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyА вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему.
Отличное предложение. Форум видел многих энтузиастов-изобретателей, и подобное предложение звучало не раз - но Вы имеете шанс стать первым, кто таки действительно придёт и покажет свои успехи.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859060
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonПатчик на свой DDL.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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?
-- это композит? из нескольких полей?


У меня вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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;
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859061
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, ok я поменяю порядок колонок.

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

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

ADD KEY t_val (t,val) - это я так понимаю модный аналог CREATE INDEX...
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859062
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttSiemargl,

При чем тут штаты? У нас тоже есть патентное бюро.У нас и в Европе алгоритмы не патенуются
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859063
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnymaytonhVostt,

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

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

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

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

А ты что? Пытаешся еще и одним махом решить задачу ХРАНЕНИЯ? Это вообще капец нерешаемая задача
особенно в условиях когда работаем с документооборотм произвольной системы Х в которой нет ни таблиц
ни каких статистических свойств ни закономерностей. Есть просто простыня атрибутов и значений.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859067
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglУ нас и в Европе алгоритмы не патенуются

Техническое решение, не сам алгоритм.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859069
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто как я услышал про сортировку с целью оптимизации какого-то там хранения - мой ДБА-шный мозг
не выдержал. Пока грелась идея об альтернативе ЕАВ - мне было понятно. Типизация там.
Дерево - тоже понятно. Метадата как часть основных данных.

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

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

Вобщем вот в таком вот аспекте.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859070
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знатный холивар получился...
Пора завязывать.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859071
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyА вам, уважаемый Хвост, предлагаю встретиться здесь лет через пять и обсудить тему. Если вас не прихлопнут, конечно, в глухой подворотне за ваш язык и манеру общения.

Хм..

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

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


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

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

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

Конечно, чтобы не изобретать, вам придётся подстраваться, ODBC, JDBC и прочие интерфейсы городить. SQL опять же, ваш язык всёж нафиг никому не упёрся, как не крути. Даже NoSQL давно осознали, что SQL даже со всеми своими недостатками это маст хев и многие приделали или приделывают к себе SQL синтаксис для запросов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859072
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d7iЗнатный холивар получился...
Пора завязывать.

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

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

Так называемый "прототип", лежащий в единственной табличке, это курам на смех, а не решение. Но может (чем чёрт не шутит), своё решение будет не так уж катастрофически сильно отставать от СУБД версий эдак 2000-ых годов.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859073
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один патчик.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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);
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859083
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: plsql
1.
2.
3.
CREATE INDEX datatype_val_idx ON quintet(datatype, value); -- Даниный индекс мне непонятен. Он предполагает
                                                                                    -- смысловую нагрузку поиска в части поля datatype 
                                                                                    -- или композитного поля в том числе с значенем?



в данном случае тип данных это не примитив, а домен
поиск по домену, вроде понятно
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859085
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все мои вопросы и критика в связи с новой полученной информацией, кстати, снимаются :)

новая субд!
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859114
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА эти магические константы такие как 3 и 13 - зарезервированы?
ПОзволю свою ремарку по этому поводу....
это не константы, это обычные квинтеты, они не то что бы зарезервированы, они просто так записаны в БД.
Эти цифры указывают на тип данных (это в статьях на хабре и картинках, скопированных автором топика сюда): 3 - это number, 13 - это string
Дата Заезда будет иметь up=9

Если я правильно уловил суть, то в случае, если Вы будете создавать свою БД на основе квинтетов тип number вполне может иметь любое другое значение
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859126
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny
Собственно Многие-ко-многим будут выглядеть так:
iduptypordval348300Гость349300Номер3501300Бронирование351348003523490035335135013553523502

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

P.S. Ну какие же тупые эти диванные эксперты...
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859142
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Fontaine,

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

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

idtypeparentordervalue1110ROOT3300SHORT4400DATETIME8800CHARS9900DATE131300NUMBER141400SIGNED349300Номер3501300Бронирование351348003523490035335135013553523502356400Дата бронирования357900Заезд358900Выезд359356350336035735043613583505

...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859150
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь "Гость" потерян.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859151
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynny, похоже опять copy/paste подвёл (строки с id=348 нет). ну да ладно
Плохо, что у некоторых строк столбйы value пустые....
Так ФИО гостя записывается в строку с id=353? А зачем id=351?
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859153
drynny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДруг. Это не будет работать! Я имею в виду сплошным ковром. Эволюция DBMS показывает что типизированные и dbf
подобные файловые штуки не летают! Они могут работать только в том случае когда твоя система - рид-онли.
Но как только по ней пойдут транзакции на обновление - твой ковер посыпется. В нем появится плавающее
свободное пространство и только ондному богу известно какие надо ставить параметры ватер-линии для
блоков страниц и сегментов. Да к чему это! Это уже 20 лет решено в реляционных базах. Это вынесено
в механику движков.

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

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

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

В итоге будет уже не исходная СУБД, а тот ковер — решение твоей нерешаемой задачи.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859161
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drynnyДа, брат, штука в том, что это уже работает .

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

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

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

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

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

2) Мне очень не нравится термин "оно будет вполне сносно работать". От него пахнет непопаданием в SLA и NFR.
Вобщем нужно его ужесточить. Акцентировать на том что система ориентирована только на документоообоот.
И не предполагает long-term transactions, и аналитики. Про консистентность тоже умолчим. Будем просто
надеятся что операции а документами будут обеспечиваться атомарностью логики основного приложения.
...
Рейтинг: 0 / 0
Как назвать эту структуру и подход, основанные на EAV?
    #39859178
colibrii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
d7iЗнатный холивар получился...
Пора завязывать.

наоборот!!!

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

это "квинтет головного мозга" запущенный случай, не спугните пациента, изучим его получше
...
Рейтинг: 0 / 0
25 сообщений из 454, страница 15 из 19
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как назвать эту структуру и подход, основанные на EAV?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]