Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
Здравствуйте. Мы пишем проект на Django и в кчестве СУБД используем ORACLE.

Во время проектировки мы решили создать не стандартную модель, это значит что у нас есть:

1.Главная таблица Items
2. Наследуюшие таблицы(Forgein Key на Item) которые являются разными сущностями (Category, Product и т.д)
3. Таблица со списком атрибутов
4. таблица Values :


CREATE TABLE "TPPDB"."CORE_VALUE"
( "ID" NUMBER(11,0),
"TITLE" NCLOB,
"ATTR_ID" NUMBER(11,0), -- Ссылка на атрибут
"ITEM_ID" NUMBER(11,0), -- Ссылка на Item
"SHA1_CODE" NVARCHAR2(40),
"START_DATE" TIMESTAMP (6) DEFAULT NULL,
"END_DATE" TIMESTAMP (6) DEFAULT NULL,
"CREATE_DATE" TIMESTAMP (6) DEFAULT NULL,
"CREATE_USER_ID" NUMBER(11,0) DEFAULT NULL
)


Title - Значение атрибута.

Меня беспокоит то что он является NCLOB т.к там могут хранится длинные тексты. Но вопрос как сама БД с этим работает т.к 70% - 80% будут максимум в 100 символов.

Кроме того таких полей около 10(я их не указал) т.к они созданы под каждый язык.

Что посоветуйте делать? Оставить всё как есть или длинные тексты вынести в другое место и если да то как?

Спасибо!
25 янв 14, 15:36    [15467644]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 63932
Блог
Под серьёзной нагрузкой всё равно умрёт, а под несерьёзной и клобы потянут. Вывод: делайте что хотите.
26 янв 14, 22:03    [15471902]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
DDeath
Что посоветуйте делать? Оставить всё как есть или длинные тексты вынести в другое место и если да то как?
Спасибо!
Пока нагрузка небольшая - делайте что хотите. Как вырастет - ищите, в чем проблема, а там ориентируйтесь на месте. Это совет от Капитана.
Про клобы могу посоветовать не писать "select *" к таблицам с клобами, а если используете ОРМ, проследите, чтобы ОРМ тоже этого не делал.
26 янв 14, 22:24    [15471958]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
_мод
Guest
DDeath
Меня беспокоит то что он является NCLOB т.к там могут хранится длинные тексты.

varchar2
а длинные тексты хранить отдельно
27 янв 14, 10:29    [15473308]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
softwarer Можно узнать по какой причине умрет?

Стараемся делать всё правильно на AWS

ELB + пару EC2 + Memcache servers + Oracle instances multi AZ + S3

Вот только специфика проекта такая что проектировать нужно было не стандартно.

Если у вас будут советы , с радостью послушаю.
27 янв 14, 11:21    [15473646]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
А что тут нестандартного, простите. Банальный eav с историей. Как мне кажется кто-то пытается сделать "универсальное" datawarehouse. Обычно из этого получается whorehouse. Огласите задачу в целом. МОжет что подскажем...
27 янв 14, 12:15    [15474078]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
Shtock
Member

Откуда: СПб
Сообщений: 3049
p.s. фраза
автор
Стараемся делать всё правильно на AWS

ELB + пару EC2 + Memcache servers + Oracle instances multi AZ + S3
как-бы намекает, что правильность в Вашем понятии это стек технологий, а не здравый смысл...
27 янв 14, 12:16    [15474085]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
Shtock
Не стоит придираться к словам, если бы не было бы здравого смысла, не возникло бы вопроса.

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

В третьих, это ответ на вопрос, то что как раз я и ждал в это теме а не пустые насмешки. Oracle (Может и другие) создают стеки + индексы на поля типа CLOB , размер стека можно определить, тем самым он выделает количество памяти в зависимости от размера стека и их количества, а стеки создаются в зависимости от количества данных в колонке.

Краткое описание задачи:
1. Есть множество сущностей (Продукты, категории, компании, новости, и т.д около 40) нужна возможность связывать любые сущности друг с другом и с самими с собой.

2. Привязка может менять статусы и от этого менять права доступа.

3. Привязка может быть иерархической

4. Привязано может быть N`ое количество сущности к другой.

5. У каждой сущности могут быть атрибуты

6. Атрибуты сущностный могут отличатся

7. Экземпляры одной сущности могут иметь разные атрибуты

Это короткое описание части задания.

Если будут более разумные предложения, с радостью выслушаю.
27 янв 14, 22:09    [15478584]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
SERG1257
Member

Откуда:
Сообщений: 2785
DDeath
возможность масштабирования это одна из вещей о которой не стоит забывать
EAV убивает масштабирование на корню просто в силу своей архитектуры. Эту мысль вам пытались донести
DDeath
Если будут более разумные предложения, с радостью выслушаю.
Традиционные классические ER диаграммы. Традиционный классический анализ нагрузки и поиск узких мест.

Но вы конечно можете напихать разных технологий и надеятся что кривая вывезет, ваше право.
27 янв 14, 22:19    [15478619]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
Если кому интересно, вот диаграмма

Картинка с другого сайта.
27 янв 14, 22:24    [15478634]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
SERG1257
Member

Откуда:
Сообщений: 2785
DDeath
Если кому интересно, вот диаграмма
Скажите, вы правда ничего не поняли или просто издеваетесь?
27 янв 14, 22:27    [15478647]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
SERG1257 Вот ещё один которому колит глаза аббревиатура AWS , последнее вы были обязаны добавить да? Не сдержались? =)
Но спасибо за ответ посмотрю.

П.с не нашел как редактировать сообщения на форуме, вот ссылка на диаграмму . может я плохо выражаюсь
27 янв 14, 22:29    [15478653]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
SERG1257
DDeath
Если кому интересно, вот диаграмма
Скажите, вы правда ничего не поняли или просто издеваетесь?


Послушайте, я выложил диаграмму т.к плохо выражаю мысль , и для того чтоб мы говорили но одном языке показываю наглядно то что у меня есть. Почему вы так нервничаете? =)

П.с ещё раз спасибо!
27 янв 14, 22:33    [15478672]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51752

DDeath
Краткое описание задачи:
1. Есть множество сущностей (Продукты, категории, компании, новости, и т.д около 40) нужна
возможность связывать любые сущности друг с другом и с самими с собой.
2. Привязка может менять статусы и от этого менять права доступа.
3. Привязка может быть иерархической
4. Привязано может быть N`ое количество сущности к другой.
5. У каждой сущности могут быть атрибуты
6. Атрибуты сущностный могут отличатся
7. Экземпляры одной сущности могут иметь разные атрибуты

Для этой задачи у Вас диаграмма уж больно развесистая. Для вышеперечисленного достаточно
пяти таблиц:
1) Сущности
2) Типы сущностей
3) Связи между сущностями
4) Атрибуты
5) Значения атрибутов

И, кстати, для производительности гораздо губительнее кривые руки разработчика, чем все
EAV вместе взятые.

Posted via ActualForum NNTP Server 1.5

27 янв 14, 22:46    [15478724]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
SERG1257
Member

Откуда:
Сообщений: 2785
DDeath
Вот ещё один которому колит глаза аббревиатура AWS
Гугль мне выдал American Welding Society (AWS) Сваркой соединяете базу
DDeath
я выложил диаграмму
Нечитаемую
DDeath
вот ссылка на диаграмму
Гораздо лучше.

По сабжу - у вас есть задача - есть некая база, к которой ходят некие клиенты за некими данными, и на которую накладываются некие ограничения. Мне, как форумчанину интересно какая именно задача, на каких моментах стоит заострить внимание и как бы я сам решал данную задачу. Вы же спрашиваете об особенностях вашего решения, не напрягаясь обоснованием почему было выбрано так или иначе. Вполне возможно что вы правы, но некоторые слова типа: "любые сущности" "могут иметь разные атрибуты" наводят на мысль что вы не решаете свою задачу, а пытаетесь решить ее в "общем виде". Грабли этого подхода хорошо известны, если вы хотите по ним пробежатся, то смотрите про "сам себе злобный буратино".
27 янв 14, 23:01    [15478811]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
Dimitry Sibiryakov Ох уж спасибо пряморуким Форумчанинам, как же без вас. Вот только это то что вы и описали , только для более удобной разработки(Да я знаю , в ущерб производительности) Django делает таблицы для всех типов сущностей. Но вопрос был не в этом, благодарю вас О пряморукий форумчанин, можете идти дальше, большое вам спасибо!

SERG1257 Я прошу прошения, я действительно плохо выражаю мысли и плюс ко всему я не из России и мой русский ужасен.
Но я постараюсь объяснить для того чтобы вы смогли мне помочь.

У нас совмещается в проекте большое количество под проектов будь то магазин , бизнес площадка, площадка для поиска работы и т.д и всё это должно быть в одной базе и перевязано между собой. Изначально архитектура планировалась такая как описал Dimitry Sibiryakov , но т.к джанго в ущерб производительности дает другие инструменты мы решили создать под каждую сущность таблицу(Модель). Проблема возникла тогда , когда нам нужно было создавать атрибуты для сущностей и давать им значения и мы решили взять сделать её по типу EAV (хотя тогда и не знали что это такое), когда возникла задача сортировать по значению атрибута, оракл ругнулся что тип NCLOB не сортируем (но это было решено с помощью CAST и TO_NUMERIC) и тогда же, меня начало это беспокоить, я понял что оракл относится к этому типу полей по другому и я хотел выяснить как использование NCLOB может сказаться на производительности при том что у этого поля есть дубляж для каждого языка. А так же надеялся что мне смогут предложить замену EAV или хотя бы частичную замену.

П.с я не DBA и не архитектор а просто программист, по части БД я мало что знаю.

П.с.с надеюсь я описал всё более или менее понятно.
27 янв 14, 23:23    [15478889]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 51752

DDeath
джанго в ущерб производительности дает другие инструменты мы решили создать
под каждую сущность таблицу(Модель).

"Если мне Джанго работать мешает, ну её нахрен, работу мою." Почти (с)

Posted via ActualForum NNTP Server 1.5

27 янв 14, 23:36    [15478928]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
SERG1257
Member

Откуда:
Сообщений: 2785
DDeath
У нас совмещается в проекте большое количество под проектов будь то магазин , бизнес площадка, площадка для поиска работы и т.д и всё это должно быть в одной базе и перевязано между собой
То бишь о задаче, запросах, оптимизации вы не знаете или не хотите узнавать, надеясь что все будет хранится в EAV структуре и само как нибудь устаканится. И при этом печетесь о производительности.
DDeath
Проблема возникла тогда , когда нам нужно было создавать атрибуты для сущностей и давать им значения и мы решили взять сделать её по типу EAV (хотя тогда и не знали что это такое), когда возникла задача сортировать по значению атрибута, оракл ругнулся что тип NCLOB не сортируем
см пост от _мод, только уточню, что наверное не varchar2, а nvarchar2 для значений втискивающихся в 4000 символов. Для более длинных значений, пусть клиент идет за добавкой в дополнительную таблицу, например найдя в конце TITLE - "продолжение следует".
27 янв 14, 23:42    [15478946]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
DDeath
У нас совмещается в проекте большое количество под проектов будь то магазин , бизнес площадка, площадка для поиска работы и т.д и всё это должно быть в одной базе и перевязано между собой. Изначально архитектура планировалась такая как описал Dimitry Sibiryakov , но т.к джанго в ущерб производительности дает другие инструменты мы решили создать под каждую сущность таблицу(Модель).
Меня лично больше всего это смущает. "джанго в ущерб производительности дает другие инструменты", а мы потом берем эти инструменты и пытаемся выжать из них какую-то производительность. Сначала сами себе создаем трудности, а потом героически их преодолеваем. Может, вам вернуться на шаг назад, взять в команду спеца по ораклу и привлечь его к проектированию? Или пойдите по пути всяких соцсетей - возьмите бесплатную MySQL/Postgre и используйте как тупое хранилище данных.

P. S. Я бы всю логику на PL/SQL написал, но вы же все равно это делать не будете, поэтому даже не буду пытаться советовать.
27 янв 14, 23:43    [15478949]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
DDeath
Member

Откуда:
Сообщений: 18
rockclimber Dimitry Sibiryakov Меня смущает то что вы не знаете условий задачи поставленной перед нашей командой и начинаете хаить. Если выбор пал на джангу значит таковы условия, мой вопрос в другом...

SERG1257 Опять 25, я тут значит я хочу услышать мнения, и узнать...

SERG1257
см пост от _мод, только уточню, что наверное не varchar2, а nvarchar2 для значений втискивающихся в 4000 символов. Для более длинных значений, пусть клиент идет за добавкой в дополнительную таблицу, например найдя в конце TITLE - "продолжение следует".



Я учту спасибо, мне предлагали вариант хранения в NoSql типа MongoDB но вот что делать с привязкой к объекту...
27 янв 14, 23:57    [15478998]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
rockclimber
Member

Откуда: у меня в голове опилки?
Сообщений: 11085
DDeath
rockclimber Dimitry Sibiryakov Меня смущает то что вы не знаете условий задачи поставленной перед нашей командой и начинаете хаить.
DDeath
SERG1257 Опять 25, я тут значит я хочу услышать мнения, и узнать...
Вы хотели услышать мнения? Вы их услышали.
Если хотите советов по существу - давайте ваши условия, заставившие вас выбрать джангу. А пока, если у вас "ущерб производительности" наблюдается в одном из узлов, то я рекомендую в первую очередь от этого ущерба избавиться.
28 янв 14, 08:24    [15479498]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
deblogger
Member

Откуда:
Сообщений: 825
Народ упорно желает превращения реляций в электронную таблицу. Потому что ну просто ж заколебали эти реляции. То ли дело екзель... шивабода!
28 янв 14, 09:00    [15479597]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
deblogger
Member

Откуда:
Сообщений: 825
DDeath
П.с я не DBA и не архитектор а просто программист, по части БД я мало что знаю.

П.с.с надеюсь я описал всё более или менее понятно.


Здесь все такие, не волнуйтесь.

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

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

Не сравнивайте коммерческую или промышленную БД с тухлым и плоским социалом.
28 янв 14, 09:08    [15479625]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
_мод
Guest
Dimitry Sibiryakov
достаточно
пяти таблиц:
1) Сущности
2) Типы сущностей
3) Связи между сущностями
4) Атрибуты
5) Значения атрибутов

4-х:
1. Сущности (только самые общие атрибуты)
2 Атрибуты сущностей
3 Иерархические классификаторы (в .т.ч. классификатор типов сущностей)
4 Метаописание сущностей - фактически ER модель
все чистый EAV
28 янв 14, 09:36    [15479724]     Ответить | Цитировать Сообщить модератору
 Re: Oracle + таблица атрибутов  [new]
deblogger
Member

Откуда:
Сообщений: 825
_мод,

Теория всего, называйте вещи своими именами. Вечная мечта тех, кто не может смириться с фрагментарностью знания.
28 янв 14, 09:40    [15479740]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Проектирование БД Ответить