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

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

хоть я и любитель оценить потребление ресурсов, но

во-первых мерять нужно с умом, как и весь бенчмаркинг впрочем. И 100Мб может оказаться и хорошим и плохим результатом, в зависимости от дальнейшей функции от нагрузки

во-вторых мне больше не понравилось по ссылке
Тем не менее, при 20-25 запросах в секунду (пиковая нагрузка при работе 20 пользователей), сервер укладывается в требования по производительности — 1 секунда на отклик. В целом ресурсы его недогружены, хотя это самый бюджетный вариант: 1 ядро 2.4 ГГц при 1 ГБ оперативной памяти.
25RPS это какой то трэш вне зависимости от задачи

собственно, может там задача на расчет 100 биткойнов, но сомневаюсь и не вникал


Там к заметке приложен тест-скрипт, в котором перечисленны запросы к разным диапазонам дат, сущностям, условиям и прочему. То есть на каждый запрос делается:
1) проверка токена авторизации и прав пользователя
2) выбирается и разбирается нужный шаблон рабочего места
3) собираются метаданные запрошенных объектов
4) делается выборка из нескольких таблиц (фильтр, агрегаты, сортировка)
5) шаблон заполняется данными и готовая страница возвращается пользователю

Пункт 4 занимает основное время, остальное — миллисекунды.
11 сен 19, 15:29    [21968607]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
Давайте я немножко сделаю шаг назад. Я уже спрашивал Архитектора про API.
На основании индексной информации я сделал набросок к квинтетному интерфейсу.
trait QuntetBasicApi {

  def quintetById(id : Int) : Quintet = ???

  def quintetChainStartWith(id : Int) : LazyList[Quintet] = ???

  def quintetByDatatypeValue(datatype : Int, value : Option[Int]) : LazyList[Quintet] = ???

  def quintetByParentDatatype(parent : Int, dataType : Option[Int]) : LazyList[Quintet] = ???

}


Я включил базовый набор поисковых атрибутов с учотом индексов. Они расположены таким образом
чтобы обеспечивать быстрый доступ к множествам квинтетов.

Все прочие проекции которые можно придумать по идее должны покрываться этим API. Дополнительные
фильтры по прочим полям я пока не включил. Их можно отфильтровать позже.

Исключение - метод quintetChainStartWith(). Его задача - выборка поддеревьев по id корня.

drynny - прошу вас дать комментарии по этому API. Чего в нем еще не хватает для полноценной работы?


А какова цель этого api?
Вы же не хотите получить квинтеты и склеивать их, надеюсь.

API есть готовое, оно реализует основные функции платформы:
cmdМетодid объектаОписание
authpostАвторизация пользователя, возвращает токены XSRF и авторизации
_d_aliaspostidСохранить псевдоним для ссылочного реквизита
_d_attrspostidСохранить атрибуты реквизита
_d_delpostidУдалить тип
_d_del_reqpostidУдалить реквизит
_d_newpost-Создать новый тип
_d_not_nullpostidУстановить флаг "Обязательный" у реквизита
_d_nullpostidСнять флаг "Обязательный" у реквизита
_d_refpostidСоздать ссылку на тип
_d_reqpostidДобавить реквизит
_d_savepostidСохранить имя типа, его базовый тип и признак обязательности
_d_uppostidПереместить реквизит на 1 позицию выше среди равных
_m_delpostidУдаление объекта
_m_movepostidПеремещение подчиненного ообъекта под другого родителя
_m_newpostid типаСоздание объекта заданного типа
_m_savepostidСохранить значение и реквизиты объекта, если они заданы
_m_setpostidИзменить / создать / удалить реквизит объекта
_m_uppostidПереместить объект на 1 позицию выше среди равных
dictget-Список независимых типов объектов
dir_adminget, post-Список файлов и директорий, действия с ними
edit_objgetidДанные для формы редактирования объекта
edit_typesget-Данные для Редактора типов
objectget, postid типаДанные для формы списка экземпляров типа объекта, команда на удаление
reportget, postid отчетаДанные выполненного запроса (отчета), параметры, команда на выполнение изменений
11 сен 19, 15:37    [21968621]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41889
drynny, вы продаете описание интерфейса вот в таком виде?

Дружище - это несеръезно! Здесь нет типа возвращаемого параметра. Тоесть я щас должен
глядя на это просто догадаться что мне вернут и будет ли это коллекция или атом?

Почему у вас нет описания хотя-бы на SOAP/GraphQL или в крайнем случае на Swagger?
Вы проделали тонну работ с 2006 года но у вас отсутствует элементарное! Почему?
11 сен 19, 18:41    [21968818]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
drynny, вы продаете описание интерфейса вот в таком виде?

Дружище - это несеръезно! Здесь нет типа возвращаемого параметра. Тоесть я щас должен
глядя на это просто догадаться что мне вернут и будет ли это коллекция или атом?

Почему у вас нет описания хотя-бы на SOAP/GraphQL или в крайнем случае на Swagger?
Вы проделали тонну работ с 2006 года но у вас отсутствует элементарное! Почему?


Я не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было).
API вообще появилось в конце прошлого года и ещё не устоялось.

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

К сообщению приложен файл (api.xlsx - 12Kb) cкачать
11 сен 19, 20:28    [21968892]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41889
Спасибо. Эксцель файл более плотный хотя все таки не достаточный. В вашей конторе... эээ "Интеграл" (?)
есть техно-писатель который верстает документацию? Вообще кто у вас есть? Есть вы. Сколько еще примерно
людей участвуют в разработке?
11 сен 19, 20:48    [21968900]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
Спасибо. Эксцель файл более плотный хотя все таки не достаточный. В вашей конторе... эээ "Интеграл" (?)
есть техно-писатель который верстает документацию? Вообще кто у вас есть? Есть вы. Сколько еще примерно
людей участвуют в разработке?

Ядро писал я один, но мне помогал друг, как специалист по безопасности, искал дыры и давал советы. Он же иногда советовал как реализовать некоторые моменты.
Еще я обращаюсь к различным дизайнерам при необходимости.
Все остальные материалы, на которые здесь даны ссылки, созданы мной.

Прикладные разработчики про квинтеты ничего вообще не знают. Им это не нужно. API у меня попросили, я сделал.

Если вам интересно, то можете присоединиться, кстати.
11 сен 19, 21:12    [21968910]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

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

не могу после заявленных утверждений пройти мимо, несколько цитат с сайта этой скромной системы :)


Выберите свой формат, способ и продолжительность обучения из 5 вариантов

Бесплатно. Все необходимые материалы предоставляются.

3-дневный курс. Стоимость: 8900 руб. (в группе), 28900 руб. (индивидуально).

5-дневный курс. Стоимость: 12900 руб.

8, 16, 24 или 40-часовой курс. Стоимость: 1000 руб./час.

Ответы на вопросы, помощь, программирование. Любая длительность. 1500 руб./час.




— Вы научитесь программировать простые веб-приложения: проектировать базу данных, организовывать бизнес-логику, создавать запросы SQL (как в MySQL, Posgre, ...) и экранные формы, используя HTML, CSS, Javascript.

(Posgre -- чё? )

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

— Даже опытные программисты часто сталкиваются с тем, что не могут понятно объяснить то, как решается задача на практике, заказчику. Интеграл максимально упрощает процесс как разработки, так и общения с клиентами. Дополнительный инструментарий в вашем портфеле — плюс к вашей деятельности и имиджу.

(интеграл вообще всё делает сам и даже заказчиков находит)

и.. любой сайт лохотронов-разводил

Доходы на практике

— 90% наших слушателей начинают зарабатывать уже на практических занятиях. Наши коучи вам в помощь

Прибыльно и проверено

— Проверенные стратегии сводят на минимум потери и увеличивают процент успешных сделок до 80%
11 сен 19, 21:31    [21968921]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58486
Блог
drynny
Я не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было)

А с 2006 по 2008 и с 2014 по 2019-й оно таки развивалось? Мне просто любопытно, сколько Вам понадобилось времени на то, чтобы написать и отладить 2300 строк кода.
11 сен 19, 22:12    [21968944]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58486
Блог
hVostt
Работе в Интеграле вас можем научить только мы

Как там было у классиков... "Любая деятельность, учить которой выгоднее, нежели заниматься ей самому - лохотрон"?
11 сен 19, 22:14    [21968948]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41889
Я вот в 90х задумал написать комьютерную сетевую игру на сокетах. Танчики.
И кирпичики. До сих пор - в статусе тех задания. Я уже 20 раз технологию
поменял. Сначала это был MS-DOS в VGA mode. Потом Windows 98/OpenGL...
Вобщем ... когда буду на пенсии...

Короче некоторые проекты нельзя закончить. Их можно только прекратить.

Но с нашим топиком мне кажется что рост системы шел не от идеи квинтетов
а от улучшений уже работающей системы документооборота. Ядро или приложение?
Яйцо или курица?
11 сен 19, 22:19    [21968953]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15840
softwarer
drynny
Я не пилю ядро с 2006 года, а делал перерывы (например, с 2008 по 2014 развития ядра не было)

А с 2006 по 2008 и с 2014 по 2019-й оно таки развивалось? Мне просто любопытно, сколько Вам понадобилось времени на то, чтобы написать и отладить 2300 строк кода.


Товарищ готов говорить про всё, что угодно. Про количество строк, по какие-то 100 мб в вакууме.

Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV -- раз уж выбран был именно такая основа архитектуры.

Забиваю гвозди пассатижами. Выяснилось, что остальные инструменты не нужны, вредны и избыточны. А я уже 10 собачих будок так построил, заказчики довольны! Сколько сэкономили. Потрачено не больше 100 гвоздей на будку. А вас сколько гвоздей уходит, а? Ну-ка приведите свои графики.
11 сен 19, 23:31    [21969003]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
mayton
Я вот в 90х задумал написать комьютерную сетевую игру на сокетах. Танчики.
И кирпичики. До сих пор - в статусе тех задания. Я уже 20 раз технологию
поменял. Сначала это был MS-DOS в VGA mode. Потом Windows 98/OpenGL...
Вобщем ... когда буду на пенсии...

Короче некоторые проекты нельзя закончить. Их можно только прекратить.

Но с нашим топиком мне кажется что рост системы шел не от идеи квинтетов
а от улучшений уже работающей системы документооборота. Ядро или приложение?
Яйцо или курица?


Ну, такое тоже было (1994 год, ZX Spectrum, ходилка-стрелялка на ассемблере), но тут не тот случай.

В 2003 я с нуля делал систему управления контентом на EAV в филиале сотовой компании. Ну, тормозила, но как-то работала (года три). То был конструктор, и мне понравилось. Хотя остальное я фигачил на PL/SQL и всяких PHP в обычных базах Oracle, MySQL и MSSQL.
А потом мне нужно было навести порядок в планово-экономическом отделе компании, где всё было в бумажных журналах (я был типа управляющего). Днем я методом кнута и пряника пересаживал бабушек в эксель (смотрите, сумма прописью тут сама пишется!), а потом в систему на квинтетах (чтобы набрать счет вы просто тычете в товары из списка). А вечерами опять с нуля продумывал и писал эту самую систему, а на ней немедленно делал приложение.

Ядро таки было первым.
11 сен 19, 23:44    [21969007]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58486
Блог
hVostt
Товарищ готов говорить про всё, что угодно. ... Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV

Это изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми.
11 сен 19, 23:59    [21969014]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15840
softwarer
Это изначально было очевидно. В детстве я читал книжку про инженерное мышление, и там на первых страницах было сказано: большинство людей, думая, как решить задачу, хватаются за первый попавшийся способ и начинают работать, не думая об альтернативах. Именно в этом месте чаще всего упускается оптимальное решение, да и сколько-нибудь вменяемое решение вообще. Ровно тот случай. Квинтеты ничего эффективнее не решают, просто они попались первыми.


Сильно переусложнённые решения часто признак джуна, например, упаковывать несколько простых инструкций в одну строчку, которую невозможно сходу понять и прочесть, делать нелепые нагромождения из архитектуры, экономия на спичках и прочее.

Здесь прям какой-то ярчайший пример джуна-переростка.
12 сен 19, 00:27    [21969024]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
hVostt
Member

Откуда:
Сообщений: 15840
softwarer
Квинтеты ничего эффективнее не решают


Ладно бы просто не решали. Они значительно усугубляют. Забудем про производительность и эффективность. Тут банальная надёжность ниже плинтуса.
12 сен 19, 00:30    [21969026]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1977
[quot drynny]
mayton
В 2003 я с нуля делал систему управления контентом на EAV в филиале сотовой компании. Ну, тормозила, но как-то работала (года три). То был конструктор, и мне понравилось. Хотя остальное я фигачил на PL/SQL и всяких PHP в обычных базах Oracle, MySQL и MSSQL.
А потом мне нужно было навести порядок в планово-экономическом отделе компании, где всё было в бумажных журналах (я был типа управляющего). Днем я методом кнута и пряника пересаживал бабушек в эксель (смотрите, сумма прописью тут сама пишется!), а потом в систему на квинтетах (чтобы набрать счет вы просто тычете в товары из списка). А вечерами опять с нуля продумывал и писал эту самую систему, а на ней немедленно делал приложение.

Ядро таки было первым.


а как пришла идея ядрить на квинтетах, а не на, просто как в Руби-он-Раилс на табличках?

В ПЭД сколько данных было? мне тоже довелось поработать в таком подразделении .... в банке .... как представлю что все счета, проводки, обороты, лифо и фифо заквинтечены, так и удивлюсь..... впрочем, если до времени хватало бумаги - не особо наверное много.
12 сен 19, 10:53    [21969223]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1977
softwarer
hVostt
Товарищ готов говорить про всё, что угодно. ... Но не готов ответить какую задачу решают квинтеты, и почему именно они решают её эффективнее, чем классический EAV

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


а что за книга?
12 сен 19, 10:54    [21969224]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58486
Блог
Vladimir Baskakov
а что за книга?

Ох. Затруднюсь точно назвать. Помню, что автор американский. Дома пороюсь, если найду в архивах - скажу точные данные, она того стоит.
12 сен 19, 11:13    [21969241]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

Откуда: Владимир
Сообщений: 209
Vladimir Baskakov
а как пришла идея ядрить на квинтетах, а не на, просто как в Руби-он-Раилс на табличках?

Не было времени верстать формы и админить таблички в базе.
Создал тип, добавил реквизиты и связи — уже готова форма для редактирования всего этого.
Накликал отчет, написал инструкцию — пользователь пошел работать.

Vladimir Baskakov
В ПЭД сколько данных было? мне тоже довелось поработать в таком подразделении .... в банке .... как представлю что все счета, проводки, обороты, лифо и фифо заквинтечены, так и удивлюсь..... впрочем, если до времени хватало бумаги - не особо наверное много.

Дались вам эти квинтеты. Вот, покликайте здесь демку:
bkint.ru/index.php?db=demo

Там партионный учет, фифо, оборотная ведомость, отчеты рентабельности по типам и товарам.
Придет ли вам в голову, что там всё на квинтетах? Спорю, что нет.

Данных в ПЭО было столько:
- 10-12 сотрудников
- сотни договоров (с этапами, ответственными, счетами, калькуляциями)
- тысячи клиентов
- тысячи счетов
- сотни товаров
- десятки событий в день
- десятки отчетов

При таких объемах приложение живет больше 13 лет и бед не знает ни с надежностью, ни производительностью.
12 сен 19, 11:54    [21969280]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1977
автор
- сотни договоров (с этапами, ответственными, счетами, калькуляциями)
- тысячи клиентов
- тысячи счетов


ПЭД группы ВТБ. Немного больше клиентов, договоров, счетов, отчетности и сотрудников.
12 сен 19, 12:26    [21969313]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
Vladimir Baskakov
Member

Откуда:
Сообщений: 1977
softwarer
Vladimir Baskakov
а что за книга?

Ох. Затруднюсь точно назвать. Помню, что автор американский. Дома пороюсь, если найду в архивах - скажу точные данные, она того стоит.

мерси
12 сен 19, 12:30    [21969318]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41889
hVostt
softwarer
Квинтеты ничего эффективнее не решают


Ладно бы просто не решали. Они значительно усугубляют. Забудем про производительность и эффективность. Тут банальная надёжность ниже плинтуса.

Я увидел пока только 1 поинт. Если проектировать CQRS или EventStore то лента событий имеет очень
простую спецификацию. 5 атомов на каждую запись + таймстамп + тип евента (команды).
Создание записи или удаление или апдейт.
12 сен 19, 15:10    [21969567]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
mayton
Member

Откуда: loopback
Сообщений: 41889
Давайте рассмотрим мои concerns.

1) Остался КМК без ответа мой вопрос касательно иерархической таблицы.
В первых двух строках происходит регистрация примитивных типов.

Рутовый элемент. На псевдо-языке
registerPrimitiveType(id = 1, datatype = 1, parent = 1, ord = 0, value = 'root');


Здесь мне непонятно почему древовидная структура имеет петли. Рутовый элемент имеет родителя тоже root.
Немного сбивает с толку сквозная нумерация всех атрибутов. Я-бы предпочел добавить +1000 хотя-бы к sequence
чтоб не "рубила" так похожесть по глазам. И вообще КМК хорошая практика разделять неоднозначные применнеия
сиквенсов на дипазоны. Хотя-бы на положительные и отрицательные. К примеру примитивные типы + энтити = отрицательные.


2) И тип SHORT.
registerPrimitiveType(id = 3, datatype = 3, parent = 0, ord = 0, value = 'short');


Вобщем непонятно почему архитектор не ввел NULL как признак отсутствия родителя.

Непонятно почему для SHORT парентовый элемент не петля как в случае с рут. А некий нулевой элемент.

CREATE TABLE quintet(
    id       INT    PRIMARY KEY,
    datatype INT    NOT NULL,
    parent   BIGINT NOT NULL,
    ord      INT    NOT NULL,
    value    TEXT
);

INSERT INTO quintet VALUES (1,1,1,0,'ROOT');
INSERT INTO quintet VALUES (3,3,0,0,'SHORT');
INSERT INTO quintet VALUES (4,4,0,0,'DATETIME');
INSERT INTO quintet VALUES (8,8,0,0,'CHARS');
INSERT INTO quintet VALUES (9,9,0,0,'DATE');
INSERT INTO quintet VALUES (13,13,0,0,'NUMBER');
INSERT INTO quintet VALUES (14,14,0,0,'SIGNED');

INSERT INTO quintet VALUES (348,3,0,0,'Гость');
INSERT INTO quintet VALUES (349,3,0,0,'Номер');
INSERT INTO quintet VALUES (350,13,0,0,'Бронирование');
INSERT INTO quintet VALUES (351,348,0,0,null);
INSERT INTO quintet VALUES (352,349,0,0,null);
INSERT INTO quintet VALUES (353,351,350,1,null);
INSERT INTO quintet VALUES (355,352,350,2,null);
INSERT INTO quintet VALUES (356,4,0,0,'Дата бронирования');
INSERT INTO quintet VALUES (357,9,0,0,'Заезд');
INSERT INTO quintet VALUES (358,9,0,0,'Выезд');
INSERT INTO quintet VALUES (359,356,350,3,null);
INSERT INTO quintet VALUES (360,357,350,4,null);
INSERT INTO quintet VALUES (361,358,350,5,null);

3) Непонятно почему сущность Гость имеет тип SHORT(3) ? Это-ж ерунда. Сущность должна иметь тип сущность!

Хотелось-бы услышать камент dryny.

Понимаешь. Все эти исключения. Рулы. Касаемо 0 и 1 и NULL они очень важны. Они определяют
чистоту технологии. Как например язык Lisp один раз определяет семантику списка списков
с очень простыми рулами. И дальше идет просто лавинообразное наращивание смыслов. Причем
гладкое и красивое. Без внутренних противоречий.

С твоей технологией я признаюсь что я - буксую. Я буксую потому что эти все исключения
напрягают и заставляют меня искать другие смыслы которых скорее всего нет. Просто есть
какая-то оплошность или опечатка.

Вобщем проясни.
12 сен 19, 15:45    [21969594]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
drynny
Member

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

1) Остался КМК без ответа мой вопрос касательно иерархической таблицы.
В первых двух строках происходит регистрация примитивных типов.

Здесь мне непонятно почему древовидная структура имеет петли. Рутовый элемент имеет родителя тоже root.
Немного сбивает с толку сквозная нумерация всех атрибутов. Я-бы предпочел добавить +1000 хотя-бы к sequence
чтоб не "рубила" так похожесть по глазам. И вообще КМК хорошая практика разделять неоднозначные применнеия
сиквенсов на дипазоны. Хотя-бы на положительные и отрицательные. К примеру примитивные типы + энтити = отрицательные.

2) И тип SHORT.
registerPrimitiveType(id = 3, datatype = 3, parent = 0, ord = 0, value = 'short');


Вобщем непонятно почему архитектор не ввел NULL как признак отсутствия родителя.

Непонятно почему для SHORT парентовый элемент не петля как в случае с рут. А некий нулевой элемент.

Как-то нужно их различать — метаданные и данные.
Здесь принято так, что метаданные подчинены несуществующему элементу с ID=0, а данные подчинены корневому элементу с ID=1.
Это сделано из удобства обращения ядра с квинтетными данными (например, если нужно дать доступ к данным от корня и ниже, то даем доступ к id=1) и не противоречит квинтетной модели.
Вы можете сделать по-своему, и я не претендую на безупречность исполнения ядра и самой модели.

Отрицательные энтити я бы сделал, но выдавал бы их по очереди: +,-,+,-,...
только для того, чтобы значительно реже балансировать индексы.

mayton
3) Непонятно почему сущность Гость имеет тип SHORT(3) ? Это-ж ерунда. Сущность должна иметь тип сущность!

Хотелось-бы услышать камент dryny.

Понимаешь. Все эти исключения. Рулы. Касаемо 0 и 1 и NULL они очень важны. Они определяют
чистоту технологии. Как например язык Lisp один раз определяет семантику списка списков
с очень простыми рулами. И дальше идет просто лавинообразное наращивание смыслов. Причем
гладкое и красивое. Без внутренних противоречий.

С твоей технологией я признаюсь что я - буксую. Я буксую потому что эти все исключения
напрягают и заставляют меня искать другие смыслы которых скорее всего нет. Просто есть
какая-то оплошность или опечатка.

Вобщем проясни.

Гость имеет тип SHORT потому что это — строка (имя гостя, например).

Если что-то непонятно, значит, вероятно, это не важно и ни на что не влияет.
Нужно помнить одну вещь: нет никакой таблицы. Таблица СУБД используется в прототипе как временное решение, и не важно, NULL там или 0. Да, с эстетической точки зрения это важно, но это разовая задача, и вылизывание таких моментов даст 0 денег, и силы лучше потратить на продажу того, что есть, торговцу помидорами.
12 сен 19, 18:56    [21969766]     Ответить | Цитировать Сообщить модератору
 Re: Как назвать эту структуру и подход, основанные на EAV?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 58486
Блог
drynny
Как-то нужно их различать — метаданные и данные.

Если Ваш конструктор начнёт приближаться к промышленному решению, Вы обнаружите ещё несколько важных требований.

1. Метаданные должны лежать отдельно от данных. Просто потому, что вне детских проектов с ними работают разные люди на нескольких серверах, и им нужно обмениваться метаданными, таскать изменения, решать конфликты, и всё это - без данных. Помимо прочего, метаданные нужно ещё и класть в version control, причём в том формате, в котором человек легко глазами разберётся в изменениях, и одновременно в том формате, который без проблем подхватит сервер.

2. Сервер должен уметь работать с несколькими метамоделями и несколькими источниками данных одновременно. При этом функционал должен по максимуму их пересекать, то есть разруливать права одних и тех же пользователей на доступ ко всем источникам данных, строить выборки вперехлёст из данных разных источников и т. д. Применений множество, начиная от модульности разработки.

3. Нужна "метамодель метамодели", то есть возможность искать, вводить и редактировать метаданные, пользуясь теми возможностями сервера, которые предоставляются для поиска, ввода и редактирования данных. Как минимум, это вдвое сокращает работы по кодированию интерфейса (отдельно - админский, отдельно - пользовательский), но куда важнее то, что это является своеобразной гарантией полноценности каждого из них.

4. Решение должно иметь возможность легко, лучше всего прямо на демонстрации подхватить существующие данные заказчика. Ничто не производит на него такого впечатления как "давайте введём коннтект к базе, нажмём кнопку... о, вот видите, ваши данные, узнаёте? А вот мы их покрутим, сделаем вот такой отчёт, а теперь давайте в два клика создадим форму ввода, вот, можно сразу испробовать её в деле..."

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