Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 посоветуйте БД для хранения сложносвязных объектов  [new]
baleog
Member

Откуда:
Сообщений: 2
Есть задача хранить в БД сложносвязные объекты:
* У классов глубокое наследование (макс. глубина до пары десятков)
* Есть "вложенные" объекты
* Множество полиморфных ассоциаций (многое к 1, 1 ко многим, многое ко многим).
* Все ассоциации двусторонние

Фактически полей у объектов немного, а вот ассоциаций в среднем штук по 10 у каждого.

Желательны:
* транзакционность
* параллельная запись

Посоветуйте, пожалуйста, БД для такой ситуации.

Вроде бы по функционалу подходит JPA совместимый фреймворк для sql сервера - но смущает необходимость большого числа join'ов
5 мар 14, 16:01    [15677870]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DPH3
Member

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

А что с этими сложными объектами надо потом делать? Только хранить в БД или искать по произвольным сложносочиненным запросам?
Обновляется сразу большой и сложный объект или каждый из его кусочков?
И какие требования к производительности, сколько будет этих объектов и т.п.?
5 мар 14, 17:01    [15678375]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
baleog
Member

Откуда:
Сообщений: 2
> Только хранить в БД или искать по произвольным сложносочиненным запросам?

и хранить и поиск. Поиск по Id либо запрос всех объектов заданного класса и его потомков. Полнотекстовый поиск будет нужен очень редко

> Обновляется сразу большой и сложный объект или каждый из его кусочков?

Весь объект обновляется. Обновлять только измененные поля было бы неплохо, но не обязательно

> И какие требования к производительности, сколько будет этих объектов и т.п.?

Объекты хранятся "пакетами". В каждом пакете порядка 100 тысяч объектов. Пакетов может быть сотни.
Обновление 1000 объектов со всеми связями не должно превышать 1сек (а лучше меньше).
Важна высокая доступность базы, как на чтение, так и на запись
5 мар 14, 17:11    [15678449]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DPH3
Member

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

Хм, можно посмотреть на какую-нибудь документориентированную БД. Cassandra, например, там хотя бы транзакции есть. Монго, конечно, не подходит )

Если отказаться от декларативной ссылочной консистентности на уроне БД, то можно объект со всеми его связями хранить как одну сущность (блобы, сложные структуры, xml-поля - в зависимости от конкретной СУБД). Но тут надо придумать схему проверки целостности на уровне приложения. Тогда и join будет мало и операции сохранения-получения будут очень дешевыми.

Выбор конкретной СУБД тут зависит от личного опыта и денег. Любая из взрослых СУБД подойдет (Oracle, DB2, MS SQL, Postgresql etc)
5 мар 14, 17:23    [15678531]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
SERG1257
Member

Откуда:
Сообщений: 2934
Если вы переведете ваши сложносвязанные объекты на язык хранения - достать данные, поменять данные и т.д. то вполне может оказаться что все не так уж плохо (и наследование будет не глубоким, и вложенные объекты не проблема, и ассоциации не вопрос)
baleog
Обновление 1000 объектов со всеми связями не должно превышать 1сек (а лучше меньше).
Надеюсь вы понимаете, что конкретные цифры упираются скорее в железо и логику запроса, а не в "какую СУБД выбрать".
5 мар 14, 17:59    [15678774]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Yo.!
Guest
baleog
Есть задача хранить в БД сложносвязные объекты:
* У классов глубокое наследование (макс. глубина до пары десятков)
* Есть "вложенные" объекты
* Множество полиморфных ассоциаций (многое к 1, 1 ко многим, многое ко многим).
* Все ассоциации двусторонние

Фактически полей у объектов немного, а вот ассоциаций в среднем штук по 10 у каждого.

Желательны:
* транзакционность
* параллельная запись

Посоветуйте, пожалуйста, БД для такой ситуации.

Вроде бы по функционалу подходит JPA совместимый фреймворк для sql сервера - но смущает необходимость большого числа join'ов

mysql. обзовите ваши связи тагами и нарисуте пару примитивных SQL запросов вытягивающих вашу фигню по набору тагов
6 мар 14, 15:47    [15683678]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3430
Yo.!,

А поподробней, можете?

Как пример: ПХП массив, имеющий глубину вложенности элементов до 5-и, на каждом уровне есть 2-4 простых текстовых поля 8-500 символов, пара числовых и 0-3 булевых. Кроме этого, на каждом уровне есть 2-3 списка по 2-10 подчиненных элементов примерно похожей небольшой структуры. Надо хранить около 100 000 таких экземпляров.

Да, на некоторых подуровнях список элементов может полностью совпадать в разных экземплярах.

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

Сейчас, решаю хранением в явном виде ПХП-массива как статического элемента дочернего класса. Есть код, который из результата формы формирует текст ПХП-скрипта этого класса автоматически. Не это не айс, с т.з. количества наследников (сейчас уже около 300, будет под 100 000). Можно оставить пока и так, потому как на запрос к серверу активируется строго один дочерний класс. Но хочется упихать в БД.

Есть вариант в виде sql-дерева, но количество таблиц, содержащих разные по структуре элементы - около 20. Соответственно даже для безджойнового варианта деревянной выборки (фак в разделе mySql тут) - всё равно надо соединять эти 20 таблиц и через group_concat() строить json массивы для отдачи в ПХП (не проблема, эта часть запроса у меня строится автоматически). В среднем, текст запроса тянет на 10к и поболе.

Собственно экземпляр массива - это набор правил для автоматического выделения содержательной части товарного описания из заданного произвольного текста (прайс-листа). Для каждой новой фирмы - строится один раз и в полуручном режиме.
12 мар 14, 23:38    [15714177]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
mad_nazgul
Member

Откуда:
Сообщений: 5825
Arhat109
Yo.!,

Есть вариант в виде sql-дерева, но количество таблиц, содержащих разные по структуре элементы - около 20. Соответственно даже для безджойнового варианта деревянной выборки (фак в разделе mySql тут) - всё равно надо соединять эти 20 таблиц и через group_concat() строить json массивы для отдачи в ПХП (не проблема, эта часть запроса у меня строится автоматически). В среднем, текст запроса тянет на 10к и поболе.

Собственно экземпляр массива - это набор правил для автоматического выделения содержательной части товарного описания из заданного произвольного текста (прайс-листа). Для каждой новой фирмы - строится один раз и в полуручном режиме.


Если хотите хранить именно массивы, то в PostgreSQL есть средства для работы с массивами.
А так, в начале посоветую проанализировать структуру данных.
Возможно она сможет быть наложена на реляционную структуру без использования массивов.
13 мар 14, 07:35    [15714750]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Yo.!
Guest
на мой взгляд хватит трех примитивных табличек. arrays, elements, relations. в relations ссылка на массив и елемент. т.е. через relastions один массив может быть "вложен" в несколько элементов других массивов. нумберы, будеаны и чары можно вынести из елементс, не знаю, тут по вкусу. можно сразу подумать на тему партиций, вроде в постгрес они хоть и не совсем правильное но какое-то партиционирование было.
13 мар 14, 10:36    [15715427]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
baleog
Есть задача хранить в БД сложносвязные объекты:
* У классов глубокое наследование (макс. глубина до пары десятков)
* Есть "вложенные" объекты
* Множество полиморфных ассоциаций (многое к 1, 1 ко многим, многое ко многим).
* Все ассоциации двусторонние

Фактически полей у объектов немного, а вот ассоциаций в среднем штук по 10 у каждого.

Желательны:
* транзакционность
* параллельная запись

Посоветуйте, пожалуйста, БД для такой ситуации.

Вроде бы по функционалу подходит JPA совместимый фреймворк для sql сервера - но смущает необходимость большого числа join'ов

Загляните на форум Cache.
Там есть классы, наследование, вложенность объектов, SQL.
И есть низкоуровневый доступ "key-value" к тем же данным.
Есть возможность задать структуру хранения максимально отвечающую Вашей задаче.
Если упретесь в какие-то ограничения объектного или SQL доступа, то всегда можно эти ограничения обойти через доступ "key-value".
По скорости доступ "key-value" на порядок быстрее SQL Cache и SQL других СУБД.
13 мар 14, 11:25    [15715773]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DPH3
Member

Откуда:
Сообщений: 456
Arhat109
Выборка всего экземпляра(узла), его части с заданного подуровня, поиск всех верхних узлов по образцу из подуровня.

А вот про "поиск всех верхних узлов по образцу из подуровня" нельзя ли рассказать поподробнее? Под образцом тут что понимается?
13 мар 14, 15:10    [15718092]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3430
Yo.!,

Посчитал. В 3НФ получается 15 табличекразной структуры. Это со связями М:М.
13 мар 14, 16:26    [15718777]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3430
DPH3,

За свою проблемку отвечу: да, всё пристальнее смотрю в сторону mumps/Cache.
13 мар 14, 16:27    [15718781]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Yo.!
Guest
Arhat109
Посчитал. В 3НФ получается 15 табличекразной структуры. Это со связями М:М.

3НФ студент, что ли ? что за связи М:М у тебя в пхп массивах ?
13 мар 14, 20:25    [15720268]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
ДаВот
Guest
DirksDR,
просто за упоминание слова "Cache" в приличных обществах должны немедленно выражать порицание и раздавать щелбаны! Это не просто НЕ база данных - это просто маркетинговый развод лохов. Объем изначальных архитектурных, системных и идеологических дефектов в этом поделии зашкаливает за все, за что может зашкалить. В сущности это просто файл с небольшими доморощенными надстройками, которые еще и работаю как им вздумается.

И ВСЕ!!!

На разработчиков переложена ответственность, по ручной организации транзакций, по ручной организации коллективной работы пользователей, по ручному восстановлению данных при падении этого поделия по любой причине. Естественно, средний разработчик на все это плюет! В результате поделие производит артефакты в данных в большом количестве. А в случае падения - основной задачей является ручная сборка внутренних структур. Собственно вот она цена "производительности".
18 апр 14, 10:33    [15899757]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
ДаВот,

В приличном обществе не принято анонимно охаивать что-либо и кого-либо.
18 апр 14, 15:43    [15901990]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3430
ДаВот,

Не нравится - не ешьте. Пользуйте старый добрый Mumps, который устойчиво работает практически без каких-либо изменений с лохматого 1979 года... будет вам и "скорость" и "надежность". Собственно ваши "хваленные" СУБД, пользуют эту технологию при организации индексов, как раз для организации "скорости" доступа. Вроде надежны... или "что-то мешает"? :)

Не нравится, ну пишите БД, такие чтоды не создавать индексы. Это реальная скорость ваших СУБД без идей Mumps.
19 апр 14, 11:50    [15904413]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Victor Metelitsa
Member

Откуда: Тюмень
Сообщений: 2559
Настоящая ОО-СУБД - это GemStone/S, и, возможно, MagLev.

https://www.sql.ru/forum/956682/gemstone-s
19 апр 14, 18:29    [15905425]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
ДаВот
Guest
DirksDR,
В приличном обществе не принято анонимно охаивать что-либо и кого-либо.

Отличный ответ в стиле Cache! Вот пример технических достижений Cache, способов их достижения и самого маркетинга Cache. Вместо того, чтобы обсудить содержание переключились на обсуждения самого моего сообщения. И так с этим поделием во всем.
21 апр 14, 17:42    [15912178]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
ДаВот
Guest
Arhat109, проблема не в Mumps, а в том какими веселыми способами этот скелет заставляют двигаться и выглядеть как бы живым и местами улыбающимся. Пирамиды и целые сферы легкого вранья-умалчивания (о свойствах продукта) перемежающиеся маркетинговыми эскападами с точно выверенным текстом (а то гладишь и в суд подадут) умножаются на тотальную некомпетентность принимающих решения со стороны части заказчиков. И живем. И продать можем, что хотим! Вот это ДЕЙСТВИТЕЛЬНО весело.
21 апр 14, 17:55    [15912231]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
ДаВот,

Вместо того, чтобы обсудить содержание

На этом форуме уже много раз это обсуждалось.
Есть недостатки, есть достоинства.
На мой взгляд достоинства перевешивают, на Ваш - нет.
Это называется демократия. Или плюрализм? Неважно.
22 апр 14, 11:54    [15914880]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
DirksDR
Member

Откуда: Пермь
Сообщений: 340
ДаВот
...какими веселыми способами этот скелет заставляют двигаться и выглядеть как бы живым и местами улыбающимся. Пирамиды и целые сферы легкого вранья-умалчивания (о свойствах продукта) перемежающиеся маркетинговыми эскападами с точно выверенным текстом (а то гладишь и в суд подадут) умножаются на тотальную некомпетентность принимающих решения со стороны части заказчиков.

У Вас яркий и образный язык.
Если будет желание, поделитесь когда и на каких задачах Вы поимели такой печальный опыт работы с Cache.
Или это просто "маркетинговая эскапада"?
22 апр 14, 12:08    [15914970]     Ответить | Цитировать Сообщить модератору
 Re: посоветуйте БД для хранения сложносвязных объектов  [new]
Arhat109
Member

Откуда: из СССР
Сообщений: 3430
ДаВот,

ну какая это "проблема"? Разве что когда своего мозга нет, дабы критически осмысливать рекламные акции. Собственно и ваше сообщение - "сказать по делу-то что хотели?" :)
24 апр 14, 07:00    [15926526]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить