powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / EAV с возможностью быстрой выборки по сложным условиям
9 сообщений из 109, страница 5 из 5
EAV с возможностью быстрой выборки по сложным условиям
    #37066413
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander RyndinScareCrowсортированы они по какому полю?По первичному ключу.
и что мешает взять вдвое/втрое больше записей, чем нужно для показа, фильтрованных по паре/тройке наиболее селективных условий, а потом приджойнить к ним нужное?
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37066450
ScareCrowAlexander Ryndinпропущено...
По первичному ключу.
и что мешает взять вдвое/втрое больше записей, чем нужно для показа, фильтрованных по паре/тройке наиболее селективных условий, а потом приджойнить к ним нужное?
Дело в том, что все джойны, которые здесь обсуждались, как раз-таки и нужны для того, чтобы определить записи, которые можно показать. Т.е. джойны делаются по тем условиям, которые имеют значения для отбора. И всё это обсуждалось для формата хранения данных EAV. Вы, как я понял, когда говорите "приджойнить к ним нужное" - имеете в виду приджойнить имя пользователя и т.п. Но это и не обсуждается, естественно, это делается когда уже ясно - какие пользователи подходят а какие нет.
То есть ваш вопрос похоже вызван тем что вы как-то иначе себе представляете исходное условие задачи.
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37066579
web_foxПокажите, пожалуйста, лучший по времени EXPLAIN ANALYZE каждого из трёх вариантов запроса (только на одинаковых данных c одинаковым поиском) с сортировкой, которую хотели, и т.п.:
1. Через отдельные колонки (там, где bitmap-скан будет).
2. Через intarray.
3. Через bit string.
О кей, на днях постараюсь это сделать. Пока что урывками (т.к. увы очень мало свободного времени) тестирую более тщательно и в том виде, как это будет выглядеть на практике, вариант с фуллсканом. На данный момент могу сказать, что миллион записей в данном случае - это пожалуй крайний предел. Уже на полутора миллионах думает около минуты. Так что если число пользователей подойдет к миллиону (эх, чем черт не шутит), придется думать снова :).
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37107418
AnyaNartova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему-бы вам не обратить внимание на СУБД которые хранят данные по колонкам? На Sybase IQ например? По идее - она идеально ложится на вашу задачу: складываете все в одну большую таблицу, индексируеете все поля и вперед - делайте запросы как вашей душе угодно.
При этом у вас еще будет следующее:
За счет хранения данных по колонкам, IQ довольно просто позволяет добавлять/удалять колонки и индексировать их отдельно.
За счет того, что у вас статистическая информация с довольно небольшим набором значений для каждой колонки - в вашем случае коэффициент сжатия данных будет ооочень большим - база со всеми индексами будет занимать реально немного места (гораздо меньше чем ваши исходные данные).
Большинство ваших полей скорее всего нужно будет проиндексировать bitmap/bitwise индексами, скорее всего понадобятся еще индексы других типов (в IQ их много и разных) - но это уже нужно смотреть по конкретным данным.
Поскольку принцип индексирование в IQ зависит не от запросов, а от данных, которые в ней лежат, - вы действительно сможете делать запросы, какие вашей душе угодно. (кстати IQ очень элегантно обрабатывает конструкцию NOT IN, - это одна из ее сильных сторон)

Сразу скажу, - удовольствие это конечно не дешевое, - но за счет того, что архитектура IQ сильно отличается от архитектуры стандартной СУБД, - она будет требовать существенно меньше аппаратных ресурсов и дискового пространства, - так что возможно на этом удастся сэкономить. Подумайте в эту сторону.
Подробнее можно посмотреть здесь , а вот здесь - отчет который дает неплохое представление о сути продукта.
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37107435
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IQ стоит 30-40к$ по западному прайсу. В СНГ, где сайбейз тщательно скрывает цены от клиентов думаю ценник потянет на 50-60k$ за процессор. В итоге сервак на 4 проца станет не реальным по цене. И да, IQ вы нигде не найдете и не достанете просто так.
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37107445
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nartova@sybase.ruстандартной СУБДХочу до десяти раз ...!
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37107541
AnyaNartova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я собственно и не скрывала что это не дешево, но только кто вам сказал что проца понадобится 4 а не, скажем 1 ну или максимум 2? Мы похожие базы на ноутбуке средней паршивости гоняли - и ничего, прекрасно все отрабатывает.

А вот здесь справа есть кнопка на скачивания 30-дневного триала IQ 15.2, заполнили форму с данными и качайте себе - триалы под разные платформы есть.
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37107958
AnyaNartovaА почему-бы вам не обратить внимание на СУБД которые хранят данные по колонкам? На Sybase IQ например?
Спасибо! Вполне возможно, что в будущем воспользуюсь для для этой или других задач.
Ну а пока что вполне приемлемым оказалось решение на PostgreSQL - для каждого атрибута своя колонка (а не все поля в битовой строке, как я пытался в предыдущем варианте), ну и не забывать про экономию места, чтобы больше данных влезло на страницу - например использовать тип "char" вместо smallint, поля по возможности null-able, и частичные индексы (учитывающие только не null значения) .
Поскольку у меня данные состоят по большей части из флагов, получается довольно компактно, т.к. в случае если флаг не установлен, то он и места не занимает (ибо null). То же самое с целочисленными данными. То есть хотя возможных атрибутов и довольно много, всё-же (учитывая статистику именно моих данных) более компактно получается с отдельными полями, чем с битовыми строками (особенно если учесть, что они хранятся в Postgre с приличным оверхедом). Ну и частичные индексы тоже занимают намного меньше места и следовательно работают быстрее.
В общем, на десяти миллионах это всё работает вполне шустро, и сложность запроса особой роли не играет.
Единственно, понадобились некоторые ухищрения для того, чтобы индексы реально использовались планировщиком в ситуации, когда нужно вернуть результаты в отсортированном по id виде (то есть с указанием order by id desc). Индексы, во-первых, должны быть составными, такого типа:
Код: plaintext
1.
CREATE INDEX search_attributes_country ON search_attributes(country asc, id desc) WHERE country is not null;
и во-вторых, в условии запроса нужно для каждого поля нужно не просто указывать желаемое значение, а с заклинанием IS NOT NULL, например:
Код: plaintext
WHERE city IS NOT NULL AND city =  1 
, ну а для флагов просто IS NOT NULL (или IS NULL, если нужен сброшенный флаг), а не true/false.
Вполне возможно, адепты PostgreSQL найдут здесь какие-нить вопиющие косяки, но я в ней нуб, что поделать, во всяком случае пляска с бубном дала вполне приемлемый результат.
...
Рейтинг: 0 / 0
EAV с возможностью быстрой выборки по сложным условиям
    #37108690
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 09.02.2011 23:46, Васисуалий Пупкинсон wrote:

> Спасибо! Вполне возможно, что в будущем воспользуюсь для для этой или других задач.

Тут надо чётко разграничить направление БД. Если у тебя OLTP, то IQ не подходит
ни в каком виде. Если MIXED, тоже. IQ только для OLAP. Это типа на будущее для
понимания.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 109, страница 5 из 5
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / EAV с возможностью быстрой выборки по сложным условиям
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]