|
|
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Необходимо спроектировать БД. Самый важный вопрос это каким способом реализовать хранение характеристик к объекту. Характеристики могут быть текстовыми, числовыми и типа дата. Есть 4 варианта: 1) значения характеристик, которые имеют одно значение храним в одной таблице, в виде полей таблицы. Множественные значения характеристик (для одного объекта, к одной характеристике несколько значений), которые имеют тип Number, в другой. Связь 1 ко многим. Минусы: Мы заранее не знаем, сколько этих характеристик будет. Следовательно, количество полей в таблице характеристик постоянно будет меняться. Вторая таблица, характеристика только число. Если система поменяется, то придется переписывать почти все. Плюсы: быстрая выборка данных. 2) значения характеристик, которые имеют одно значение храним в одной таблице, в виде полей таблицы. Множественные характеристики, которые имеют тип текст (на самом деле будет храниться и тип дата, и число) в другой. Связь 1 ко многим. Минусы: Мы заранее не знаем, сколько этих характеристик будет. Следовательно, количество полей в таблице характеристик постоянно будет меняться. Плюсы: возможность быстрее адаптировать приложение под изменившиеся условия. 3) от таблицы объектов, все характеристики хранить в вертикальном виде и группировать их по типу в разных полях (трех). связь один ко многим Минусы: сложность выборки сохранение процедурой eav система Плюсы: логика схемы проще. 4) разбить справочники и значения характеристик по 3 таблицы. связь один ко многим. Минусы: при выборке необходимо делать union таблиц, который исключает использование индексов Плюсы: универсальность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 17:30 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Вопрос не в том, "EAV" или "не EAV", а скорее в том, какую конкретную реализацию EAV применить. :) Варианты с добавлением новых полей даже не рассматривайте. Это тупик (сто раз уже обсасывали почему). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 17:45 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Miruk Мы заранее не знаем, сколько этих характеристик будет. Следовательно, количество полей в таблице характеристик постоянно будет меняться.В подавляющем большинстве приложений, количество полей изменяется не постоянно, а от версии к версии. Но это скучно, банально и не интересно. Забубеньте свою особенную систему. Создайте трудности, а затем начните их героически преодолевать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 17:49 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
MirukСамый важный вопрос это каким способом реализовать хранение характеристик к объекту. Нет, перед ним идёт ещё более важный вопрос: будет ли нужен поиск по этим характеристикам. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 17:55 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Еще один вариант - все характеристики хранить как XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 18:41 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Да, конечно, поиск будет осуществляться! В этом есть тоже загвоздка. Спасибо, что участвуете! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 20:45 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
LSV, Буду очень признательна, если вы скинете мне ссылку! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 20:45 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
SERG1257, а поиск по характеристикам будет быстрый? Записей в таблице будет около миллиона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 20:55 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Какая СУБД в плане? И сколько у вас этих характеристик и почему они должны постоянно добавлятся? Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) Каков процент пустых (незаполненных характеристик)? Все может повлиять на конечную структуру. От себя замечу что традиционная структура - самая простая и быстрая, так что чтобы городить что то еще нужно иметь основание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:03 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Miruk Записей в таблице будет около миллиона.Немного Miruk поиск по характеристикам будет быстрый?Смотря какой поиск. Тупо seek по одному индексированному полю - однозначно быстрый. Index scan уже помедленне. Table scan - перечитает всю таблицу (но только одну). А Table scan для EAV перечитает все таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:08 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
У EAV кроме ужасного поиска есть второй органический недостаток - контроль целостности переложен на плечи прикладной программы. Суй туда любой мусор, крои структуру как хочешь - СУБД возражать не будет, но за последствия отвечай сам https://ru.wikipedia.org/wiki/GIGO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:14 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
SERG1257, Oracle пока что характеристик около 300 (можно разбить на три типа, в общем-то: число, текст и дата) добавлять могут с выходом новых указов правительства и т.п. Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) - insert, update и select. основные операции значений характеристик к объекту. Каков процент пустых (незаполненных характеристик)? около 30%, думаю. По поводу традиционной. Я предложила руководству разбить значения характеристик на 3 таблицы (по типам). Эти таблицы имеют одинаковую структуру. Поэтому поиск по разным типам характеристик можно проводить при помощи union. НО! Боятся, что поиск будет долгий, индексы не будут использованы. Другой вариант предлагает у нас программист: создать в таблице 999 полей. И по мере добавления новой характеристики заносить 300+i значение. Но мне кажется, что это тоже не то, что надо. Может быть XML лучше подойдет даже. Но здесь у меня пробел в знаниях... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:36 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
всякую модель и пилюли нужно применять с умом. Есть предметные области, где EAV - обоснованно. Почитайте внимательно EN-википедию, там расписано где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:37 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
SERG1257Miruk Записей в таблице будет около миллиона.Немного Miruk поиск по характеристикам будет быстрый?Смотря какой поиск. Тупо seek по одному индексированному полю - однозначно быстрый. Index scan уже помедленне. Table scan - перечитает всю таблицу (но только одну). А Table scan для EAV перечитает все таблицы. Я про поиск значений характеристик, используя XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:38 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
babona, статья там мне тоже не дала однозначного ответа а вот статья http://habrahabr.ru/post/247767/ заставила призадуматься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:50 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Miruk пока что характеристик около 300Немного Miruk добавлять могут с выходом новых указов правительства и т.п. То есть не внезапно, по желанию левой пятки. Вышел указ - разработана новая версия приложения - добавлен скрипт на базу. Miruk Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) - insert, update и select. основные операции значений характеристик к объекту. Это то понятно по-другому не получится. Вопрос будут ли они обновлятся по отдельности, по одному объекту, или скопом. Насколько критично время на обновление. Как правило чем легче писать - тем сложнее читать и наоборот. Miruk создать в таблице 999 полей.Почему не 300? Miruk И по мере добавления новой характеристики заносить 300+i значение.А это откуда? Возможно потребуется внести дефолтное значение новой характеристики во все объекты. Объектов как я понимаю около миллиона? Miruk Я про поиск значений характеристик, используя XML. Да почти точно так же - индекс на XML по сути парсит документ, выдирает значения полей и строит по ним нормальный индекс. Все затраты - при обновлении и добавлении XML. Прелесть в том, что ничего вручную делать не надо - все заботы берет на себя СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 21:57 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
SERG1257Miruk пока что характеристик около 300Немного Miruk добавлять могут с выходом новых указов правительства и т.п. То есть не внезапно, по желанию левой пятки. Вышел указ - разработана новая версия приложения - добавлен скрипт на базу. в общем-то не внезапно. но времени особо не будет. нужно будет срочно дорабатывать проект. Miruk Как эти характеристики будут использоваться (обновлятся, заливаться, искаться) - insert, update и select. основные операции значений характеристик к объекту. Это то понятно по-другому не получится. Вопрос будут ли они обновлятся по отдельности, по одному объекту, или скопом. если и будут изменяться, то точно по одному объекту Насколько критично время на обновление. Как правило чем легче писать - тем сложнее читать и наоборот. время критично, наверное, для любого пользователя пк... Miruk создать в таблице 999 полей.Почему не 300? чтобы не мапить отдельно поля. Но. какого типа создавать поля от 300-999? Ну и ладно, может быть и 300 пока сошло бы на первой. А дальше??? Для меня это вариант вообще никак не нравится... Miruk И по мере добавления новой характеристики заносить 300+i значение.А это откуда? Возможно потребуется внести дефолтное значение новой характеристики во все объекты. Объектов как я понимаю около миллиона? А вот про дефолтное значение, если можно, поподробнее... Miruk Я про поиск значений характеристик, используя XML. Да почти точно так же - индекс на XML по сути парсит документ, выдирает значения полей и строит по ним нормальный индекс. Все затраты - при обновлении и добавлении XML. Прелесть в том, что ничего вручную делать не надо - все заботы берет на себя СУБД. про это обязательно почитаю! но времени в обрез, 2 программера (JS и Frontend) сидят и ждут....начальство торопит... я сойду с ума (((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 22:07 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
А вот про XML. http://khpi-iip.mipk.kharkiv.edu/library/extent/dbms/viper/vip2.html Четыре параметра важных для нашего проекта Производительность поиска XML Плохая Производительность выборки части документа Плохая Производительность вставки Наилучшая Производительность обновления (уровень под-документа) Плохая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 22:16 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
У меня все упирается в EAV все-же... минусов у этой системы много... но и плюсы есть. что делать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 22:18 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Miruk чтобы не мапить отдельно поля. Но. какого типа создавать поля от 300-999?Чего то я не понимаю. Приведите пример (надеюсь это не секретная информация). Объект - покупатель Характеристика имя - строка Характеристика бюджет - число Характеристика дата последней покупки - дата Характеристика диапазон и т.д. Miruk про это обязательно почитаю! но времени в обрез, 2 программера (JS и Frontend) сидят и ждут....начальство торопит... я сойду с ума (((( Сам бог велел делать тупо и просто. Про статью - авторы решили доказать что и так тоже можно производительность всего в разы хуже чем у конкурентов, но их устраивает. Спорить не о чем. Натяжки - Прикладное программирование без программирования - их продукт совершенен, багов нет как факта - программисты для конкурирующих субд криворукие новички. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2015, 22:19 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Объект - жилой дом Характеристики: материал стен (м.б. несколько наименований) год постройки год кап ремонта количество этажей площадь и таких характеристик пока что 300 они добавится а вот идея разбить справочники и значения характеристик по 3 таблицы. связь один ко многим. это совсем плохая идея? Сам бог велел делать тупо и просто. Само просто здесь будет что??? есть 5 вариантов уже. у меня было раньше 4, здесь вариант с xml появился. xml подойдет для большой системы с количеством пользователей около 3000 чел. с одновременной работой в системе 800 пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 09:07 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Miruk, 6й вариант - взять NOSQL БД, они как раз предназначены для хранения малосвязанных обьектов с переменным количеством свойств. Важно понимать, что для Вашей задачи нет серебряной пули, любое решение будет лучше в одном и хуже в другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 11:39 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Mirukа вот идея разбить справочники и значения характеристик по 3 таблицы. связь один ко многим. это совсем плохая идея? Непонятно что имеется в виду - можно пример структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 11:42 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
MirukУ меня все упирается в EAV все-же... минусов у этой системы много... но и плюсы есть. что делать???Минусы будут у любого решения. :) Упрощенно: * таблица-справочник параметров: ID Имя тип данных(int,date,str,float,bool) вспомогательные поля и признаки * Таблица EAV-данных: автонумератор ID параметра ID типа документа ID документа Поле INT Поле Date Поле Str Поле Float Поле Bool Этого вполне достаточно. Если сделать работу только через хр.процедуры, то легко обеспечить и правильность ввода и проверки. Скорость вставок и выборок будет достаточной, хоть и не рекордной. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 12:16 |
|
||
|
Проектирование: eav система или другие варианты....
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Важно понимать, что для Вашей задачи нет серебряной пули, любое решение будет лучше в одном и хуже в другом.Плюс один Кот Матроскин Непонятно что имеется в виду - можно пример структуры? Тоже присоединяюсь к вопросу Miruk Само просто здесь будет что?Самое простое и быстрое решение это одна таблица с 300 полями. С такой структурой умеют работать все - отчетопостроители, генераторы GUI и т.д. Такая структура понятна любому новому человеку (хотя работать с 300 полями может быть неудобно) С такой структурой удобно работать серверу (искать), в самом худшем случае будет один полный скан таблицы. Для того чтобы от такой структуры отойти нужно обоснование. У яндекс маркета с гигантским количеством разных товаров и разных характеристик такое обоснование есть. У парней из статьи такое обоснование тоже есть всё прикладное «программирование» выполняет бизнес-аналитик (а лучше – продвинутый пользователь) . Иначе это просто откладывание проблемы "на потом". Далее, я не верю что все 300 полей равнозначны. Наверняка есть хиты - поля по которым поиск ведется часто, обычные поля по которым поиск ведется редко, и прочее по которым поиск ведется так редко что можно и подождать. То есть возможна гибридная структура - поля из первой и второй групп в таблице, остальное в EAV, первую группу индексируем. Miruk здесь вариант с xml появился.xml был бы выгоден, если бы вы его УЖЕ использовали (например для связи с партнерами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 17:14 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38855610&tid=1540667]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 269ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...