OpenSource Native XML Database - SEDNA

Считаетели вы что иерархические XML базы могут конкурировать с SQL?

  • Да, потому что XPath\Xquery как язык выборки удобнее для иерархических данных чем SQL

    Голосов: 8 27,6%
  • Возможно, но надо покопаться подробнее

    Голосов: 11 37,9%
  • Нет, потому что это все будет тормозить и жрать память

    Голосов: 8 27,6%
  • Нет, потому что переписывать кучу кода с SQL никто не станет

    Голосов: 2 6,9%

  • Всего проголосовало
    29

slach

Новичок
OpenSource Native XML Database - SEDNA

где то с 1999го, раз в полтора-два года регулярно, я загорался идеей всяких native XML DB
придумывал какие то перлы типа "хранить XML в SQL в релационной модели" и т.п.
ставил exist на java пробовал читать литературу

но РЕАЛЬНЫХ, ДОСТУПНЫХ (Cache коммерческий и пригоден тольк 5й версии и Virtuoso не плох, но читая документацию я эту штуку так и не полюбил) готовых хотя бы в какой то мере к эксплутаации инструментов НЕ НАХОДИЛ!

НО, сегодня праздник у меня!!!

тут в связи с бенчмарками текущей скорости поиска (она ЧЕСТНО НИКАКАЯ и никак не машстабируется =((), в потугах "нагуглить решение"
наткнулся

http://modis.ispras.ru/sedna/
глядя на домен .ru, apache 2.0 лицензию, win32 бинарники, и PHP API!!!!
хочется просто людям в ноги поклониться!!! серьезно

так же как я всем девелоперам в команде говорю, что за здоровье Игоря Сысоева должно молиться пол рунета утром и вечером =)

буду ковыряться с Sedna, если получится хоть какая то реальная производительность на выборках, буду пытаться сделать из нее пошарденый поисковый кластер а может и еще что нибудь

народ, присоединяйтесь к обсуждению
в этом форуме информация по senda еще не пробегала
 

джамшут

Новичок
фигасе 8-[___] а как у неё с кластеризацией? какие у неё есть ручки для оптимизации?
 

atv

Новичок
Считаетели вы что иерархические XML базы могут конкурировать с SQL?
Вопрос, по моему, не совсем корректный. У SQL свои задачи, а у XML баз свои. Или ты имеешь ввиду конкуренцию в деревьях?

Да, потому что XPath\Xquery как язык выборки не хуже SQL
Что касается деревьев, так XPath не то что не хуже, он лучше, ведь он для деревьев и предназначен.

Я ещё на PHP4 писал библиотеку для работы с NestedSets, и использовал XPath выражения (по которым генерились SQL запросы) для выборки узлов дерева.

Кстати, по поводу иерархических баз данных. А LDAP не кто не пробовал заюзать для этих целей? Это же, вроде как, самое оно...
 

slach

Новичок
джамшут
разработка старая первые версии еще в 2004м были
я тут погуглил, судя по всему их купит Оракл и похоронит ;)

оптимизация - там ИНДЕКСЫ по XPath выражениям + XQuery для сортировки и группировки
аггрегатные ф-ции тоже есть

стресс тесты идут в исходниках
надо запускать и смотреть

но думаю что в Sedna есть проблемы с конкурентными запросами
эта БД точно не предназначена для OLTP
скорее для периодических UPDATE и постоянных выборок

размер документа оптимально 100-кб
но в гугле есть сообщения что там есть опыт успешной работы с 1м XML документом в 150Gb(!!!) ;)
 

джамшут

Новичок
а с кластеризацией-то как?

и можно ли индексы задавать вручную или они только автоматически строятся?
 

slach

Новичок
джамшут
индексы задаются в ручную по произвольному XPath выражению
можно отдельно потом запрос строить с использованием ф-ций index-scan или fulltext-scan
доку почитай там все

с кластеризацией никак, сильно много хочешь
ну можешь написать middleware брокера, который будет шардить и джойнить результаты

либо на Hadoop замутить набор тасков которые тебе будут осуществлять поиск по разным sedna базам в hadoop нодах

-~{}~ 17.03.08 06:46:

atv
>Вопрос, по моему, не совсем корректный. У SQL свои задачи, а у XML баз свои. Или ты имеешь ввиду конкуренцию в деревьях?

задачи у обоих баз схожие
CRUD операции

просто схема данных РАЗНАЯ
в XML - коллекции->документы->узлы дерева->атрибуты->текстовые значения

в SQL -> база -> таблица -> строки -> значение столбцов

IMHO изменение схемы в XMLBD делать просто на порядок ПРОЩЕ, вопрос остается в скорости разбора INSERT, которая равна скорости SAX парсинга + оверхед на сохранение+ оверхед на индексацию
 

atv

Новичок
slach, т.е. ты предполагаешь конкуренцию XMLBD и SQLBD не только на иерархических данных?

IMHO изменение схемы в XMLBD делать просто на порядок ПРОЩЕ
Ну, при пятой нормальной форме SQLBD тоже сможет обслуживать любую схему данных. Вопрос, опять же, в скорости, во-первых, а во-вторых в контроле целостности данных и ограничениях. Как с этим вопросом справляется XMLBD?
 

Alexandre

PHPПенсионер
slach
спасибо за ссылку - буду изучать

-~{}~ 17.03.08 11:40:

ты предполагаешь конкуренцию XMLBD и SQLBD не только на иерархических данных?
atv я не копался с сендой, но могу сказать что xQuery на много гибче, чем SQL. из всех известных мне реализаций xQuery - это только обертка над SQL, соответственно эффективность только проигрывает.
если работать напрямую с XML Storage, и найти эффективные алгоритмы извлечения данных, то SQL можно сделать по всем параметрам.
 

Wicked

Новичок
что-то я слабо представляю класс задач, ообенно в рамках OLTP, где было бы уместно применять такую бд, и при этом выиграть (в чем-нибудь существенном) у варианта с MySQL/PostgreSQL. Может кто поделится соображениями?
 

atv

Новичок
atv я не копался с сендой, но могу сказать что xQuery на много гибче, чем SQL.
Даже не хочу заговаривать на эту тему, так как для начала нужно будет определиться с понятием "гибкость" в контексте языков выборки данных.

Я доверяю убеждению, что XPath предназначен для извлечения иерархических данных, а значит лучше него может быть только XPath. Тоже касается и языка SQL, он является лучшим в своей нише. И само сравнение гибкости двух, разных по сути языков, представляется мне некорректным. Да, они пересекаются на некоторых задачах, и могут выполнять задачи друг друга, но, проигрывая, при этом, в эффеткивности.

P.S. Я не сторонник того, чтобы оставаться в рамках одного подхода. Там где эффективен SQL, я предпочитаю использовать SQL, а там где XPath, я с удовольствием его использую.
 

slach

Новичок
Wicked - для OLTP эта штука ТОЧНО не предназначена
об этом сами разработчики говорят

но для выборок среди слабо структурированных данных в самый раз

вообще то, ссылосную целостность SQL базы тоже не сильно то поддерживают, REFERENCES\Foreign keys и Триггера конечно есть,
но первый тормозят (в MySQL по крайней мере), а вторые при не очень умном их использовании не работают =)

кстати в Sedna есть триггеры
которые очень не плохо вешаются на апдейты\делеты\инсерты НОД в дерево
правда я думаю это тормозит конечно же

в общем я сейчас думаю в текущем проекте применить это в качестве ПОИСКА по коллекции около 100 XML документов общим объемом 5-7 гигабайт (50-70 мегабайт) если результаты будут устраивать, может быть даже сделаю об этом доклад на phpConf2008
 

slach

Новичок
atv нее... щас отредактирую опрос

я считаю что ДА для выборок из СЛАБОСТТРУКТУРИРОВАННЫХ иерархических данных - xQuery делает SQL в разы по гибкости синтаксиса

а для выборок по нормализованным реляциям, естественно сосет потомму что JOIN у него заменяется на FOR c подзапросами
 

fixxxer

К.О.
Партнер клуба
ммм, а вот теоретически можно хранить любые иерархические данные в nested sets и даже навесить на это дело xquery... хотя тут надо думать, а уже спать охота =)
 

Alexandre

PHPПенсионер
а для выборок по нормализованным реляциям, естественно сосет потомму что JOIN у него заменяется на FOR c подзапросами
я тут теорию подтягиваю:
Afor clause may specify more than one variable, with an iteration sequence for each variable. Such a for clause produces tuples of variable bindings that form the Cartesian product of the iteration sequences. Unless otherwise specified, the binding tuples are generated in an order that preserves the order of the
iteration sequences, using the leftmost variable as the “outer loop” and the rightmost variable as the “inner loop.”

The following example illustrates a for clause that contains two variables and two iteration
sequences:

for $m in (2, 3), $n in (5, 10)
return <fact>{$m} times {$n} is
{$m * $n}</fact>

The result of this expression is the following sequence
of four elements:
<fact>2 times 5 is 10</fact>
<fact>2 times 10is 20</fact>
<fact>3 times 5 is 15</fact>
<fact>3 times 10is 30</fact>
Iteration is an important part of a query language.
соответственно можно джоинить несколько последовательностей. Но проход по последовательностям один.
 

StUV

Rotaredom
slach
что-то тема заглохла
есть какие-нибудь "обнадеживающие" результаты исследований / реальных тестов ?..
 

Alexandre

PHPПенсионер
есть какие-нибудь "обнадеживающие" результаты исследований / реальных тестов ?..
все было представленно на Конфе ;)
смотри презенташки.

-~{}~ 10.06.08 17:37:

StUV есть реальные идеи применения??
 

slach

Новичок
ну из реальных тестов
я попробую ее в поиске использовать если у меня shinx НЕ СРАБОТАЕТ
и буду в таком случае к ней кластеризацию приделывать
 
Сверху