помогите определиться: огромное дерево описателей Vs блоб с данными +

  • Автор темы Slyman
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Slyman

Гость
#1
Доброе время.
Проблема такая себе. Все это в реляционной базе данных.
Огромное дерево - порядка 300 таблиц (да. и это данность). Альтернатива - все это в определенном виде (ну ХМЛ, допустим. не важно) хранить в блобе. И по ходу дела во втором случае - строить табличку нормализованных слов с ссылками на источник. Ну поскольку разнотипные данные - несколько табличек. Но одна из них - текстовая.

Вариант 1.
Плюсы.
1. Ну, допустим, привычность.
2. Простота в реализации.
3. Все прям как по книжке.
ну что еще придумать....
Минусы.
1. Поиск ограничем языковыми возможностями (Фаерберд)
2. Скорость поменьше работы. Не каждый раз приходится читать из всех таблиц. Порядка 10-20. То есть, много зарезервировано структур "на всякий случай". Ну и отработка удаления, внесения (и вторичными ключами и тригерами)
3. Делая поисковую систему по-умному - придется все равно делать нормализованые словари. Но это неблагодарное дело можно солидно отодвинуть во времени.
4. На поля данных невозможно натянуть индексы. То есть их будет слишком много 8( . Да и полей длинной свыше 90 символов - много.

Вариант 2.
Плюсы.
1. Формат хранения известен. Был разработан раньше для коммуникативных возможностей.
2. Компактность данных. (целостность не проблема в обоих случаях)
3. Готовность данных для внешних коммуникативных сервисов.
4. Скорость "взять/положить" - несравнимо выше чем в Варианте 1.
5. Есть экспериментальный механизм поиска через УДФ прям в блобе.
6. Колоссальные возможности по поиску (стимуляция написания грамотного поиска на современных принципах работы с текстом), +скорость в индексированом списке, +релевантность, +упрощение "жизни" клиенту (не надо специально обучать его языку запросов).
Минусы.
1. Както коробит меня в блобе хранить. Ну что за безграмотность....
2. Все знают как с блобами работает база. Мусора будет куча. Соответсвенно периодические чистки несомненно скажутся на работе клиентов.
3. Офигеть (извините) можно от реализации пункта 6 из плюсов этого Варианта.

А собственно выскажитесь, кто что думает.
 
P

Pasha

Гость
#2
Для: Slyman
1. Если все в одном блобе, то зачем тебе база данных. Если с базой работает больше одного клиента одновременно - блоб отпадает. Если только один человек - база данных в твоем случае вообще не нужна.
2. Если коробит - значит ты, глядя на задачу, понимаешь что через блоб ее делать нельзя.
3. Скорось "взять/положить" в базе данных лучше, чем взять+десериализовать и сериализовать+положить во втором.
4. На случай стандартных выборки из несколькиз стандартных комбинаций таблиц есть вьюшки.
5. Индексы можно натянуть на простые поля любого размера. И необязательно делать это ручками. Индексированные вьюшки тоже никто не отменял.
6. Перекладывание работы на клиета не есть упрощение его жизни, скорее наоборот. Современные принципы работы с текстом...не бывает быстрой работы с текстом, обгоняющей по скорости индексы в базе.
7. Экспериментальный поиск прямо в блобе - см. п.6
А по поводу 300 таблиц - может быть аккуратно сократить их количество? Не бывает спецификаций начинающихся фразой "или 300 таблиц, или блоб!". Да и в схеме твоего блоба тогда должно быть около 300 разных тэгов, с уникальными наборами аттрибутов.
 
A

Azrael

Гость
#3
блоб - бяка :) . Попробуй в гугле поискать "морфологическое дерево" и/или "морфологический граф", там интересные моменты есть насчет поиска и обработки текстовой информации с минимальным начальным словарем данных. Конкретных решений нет, но общие направления ухватишь. Правда непросто все это, оч. непросто.
А вообще, поскольку задачу ты описал весьма смутно, то, возможно, что<!--QuoteBegin-Pasha+6:10:2007, 04:01 -->
<span class="vbquote">(Pasha @ 6:10:2007, 04:01 )</span><!--QuoteEBegin-->5. Индексы можно натянуть на простые поля любого размера. И необязательно делать это ручками. Индексированные вьюшки тоже никто не отменял.
[snapback]80837" rel="nofollow" target="_blank[/snapback]​
[/quote]
вот этого тебе хватит за глаза!
 
S

Slyman

Гость
#4
Более 500 полей. Около 270 таблиц.
К стати, а на like индексы используются? А запросы по поиску в основном так и выглядят.
К стати. Уже не блоб, а, скажем, большая строка.
На клиента ничего не перекладывалось. УДФ-функции работают на сервере.

Ну да ладно. Всем спасибо. Темка так себе. Просто послушать мнения. Может упустил чего.

Азраель и Паша, спасибо.
 
Статус
Закрыто для дальнейших ответов.