|
|
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинПоиск по произвольному подмножесnву 100 атрибутов не будет быстрее table scan-а - хоть с "нестандартными решениями", хоть без них.гугл же как-то за доли секунд ищет Кот МатроскинP.S. Десятки минут для "пересечения из нескольких множеств порядка 1 млн записей" - это многовато.какбы эти множества уже результат выборки по индексу, дальше они не индексированы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 13:17 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
_модSergSuperесли делать в лоб, то ищется десятки минут - получается что нужно сделать пересечение из нескольких множеств порядка 1 млн записей Откуда множества порядка 1 млн записей ? Сколько типов сущностей ?порядка ста, вариантов значений в зависимости от атрибута от двух до тысяч ну так вот я прикинул очень на глаз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 13:20 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинПоиск по произвольному подмножесnву 100 атрибутов не будет быстрее table scan-а - хоть с "нестандартными решениями", хоть без них. P.S. Десятки минут для "пересечения из нескольких множеств порядка 1 млн записей" - это многовато. У ТС 100 атр. в среднем. В запросе до 10. (на практике до 5). Т.е. чтение макс 1-10 строк по полному индексу - д.б. мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 13:21 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
_мод, Как это Вы перешли от количества атрибутов в поиске к количеству результирующих строк? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 13:39 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Как это Вы перешли от количества атрибутов в поиске к количеству результирующих строк? Это если заданному условию соотв. одна сущность. Иначе надо умножать на число найденных. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 13:54 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SergSuperа что значит классическая модель"? таблица со 100 колонками? в принципе я мог и сразу в такую таблицу писать, но не вижу как это бы мне помогло - неизвестно по каким атрибутам будут делаться запросы и соответственно по каким комбинациям полей делать индекс кроме прямой классики (на которую непонятно какие инды вешать), рассмотрите дуплеты, триплеты (...октоплеты) еав. скажем, в обозначения _мод E A1 V1 A2 V2 [AiVi] с индексами (E,A1,A2,V1,V2) (E,A1,A2,V2,V1) если поиски только по точному совпадению, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:00 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
случайно постнул недописав продолжаю, ..если поиски по точному совпадению, то с 1-м индексом и точным ограничением A1<A2[<A3[....AN]] на атрибуты но если где-то поиск по диапазонам, и велью не атомарные [=> диапазон не описывается списокм IN(...)], а сплошные -- то все перестановки Vi (т.е. очень много-плеты индексировать по всем перестановкам не получится i! индексов - таки многовато, уже при i=4) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:05 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
_модКот Матроскин Как это Вы перешли от количества атрибутов в поиске к количеству результирующих строк? Это если заданному условию соотв. одна сущность. Иначе надо умножать на число найденных. Как-то так. ээ, вот возьмем пример - ищем мужчину по имени Сергей, родившегося в 1981 году в городе Смоленск и служившего в 14 Армии. Даже если "условию соответствует одна сущность" - прочитать придется порядочно (поскольку, конечно, нет индекса, начинающегося с пола, года рождения, местоа рождения, имени и места службы в армии). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:09 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
qwwqкроме прямой классики (на которую непонятно какие инды вешать), рассмотрите дуплеты, триплеты (...октоплеты) еав. C(100, 2) = 4950 C(100, 3) = 161700 столько индексов мне не позволят сделать)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:17 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинээ, вот возьмем пример - ищем мужчину по имени Сергей, родившегося в 1981 году в городе Смоленск и служившего в 14 Армии.вот кстати примерно так и есть только атрибуты привязаны к платежным документам, некоторые дублируют существующие поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:32 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинээ, вот возьмем пример - ищем мужчину по имени Сергей, родившегося в 1981 году в городе Смоленск и служившего в 14 Армии. Даже если "условию соответствует одна сущность" - прочитать придется порядочно (поскольку, конечно, нет индекса, начинающегося с пола, года рождения, местоа рождения, имени и места службы в армии). select * from eav where e='person' and a='name' and v='Сергей' -- пусть будет 1000 строк - поиск по индексу e+a+v select * from eav where e='person' and a='year_b' and v='1981' -- пусть будет 1000 строк - поиск по индексу e+a+v select * from eav where e='person' and a='place_b' and v='Смоленск' -- пусть будет 1000 строк - поиск по индексу e+a+v select * from eav where e='person' and a='srok_a' and v='14' -- пусть будет 1000 строк - поиск по индексу e+a+v находим пересечение 5х1000 и вуаля - результат (ессно все объед. в один запрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:49 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SergSuperтолько атрибуты привязаны к платежным документам, некоторые дублируют существующие поля Если сущности - это платежные документы, то подход м.б. не чистый EAV. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:51 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
_модSergSuperтолько атрибуты привязаны к платежным документам, некоторые дублируют существующие поля Если сущности - это платежные документы, то подход м.б. не чистый EAV.может, да и должен быть, но гуппа товарищей хочет видеть только атрибуты, мне это не объяснить, аналитики согласовывали и обещали без меня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 14:59 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SergSuperqwwqкроме прямой классики (на которую непонятно какие инды вешать), рассмотрите дуплеты, триплеты (...октоплеты) еав. C(100, 2) = 4950 C(100, 3) = 161700 столько индексов мне не позволят сделать)) стреляйтеся или мигрируйте на постгрес, суйте весь еав в array-и (как вариант в hstore) и обвязывайтесь gist-индексами. PS зачем вам c(100,2) ? "вы не поняли" (ненавижу это вводные, но оно тут к месту) не C(100,2) на таблице со 100 полями, а 1 (или 2, если диапазонные поиски) индекс на таблице с 5-ю полями (дуплеты) [структуру см выше]. Записей там будет, правда, много. D:o] Много больше, чем объедков (E), и даже много больше, чем значений одиночных атрибутов[EAV]. Прикинуть конечно можно, там те самые C(100,2) прорежутся, при условии правда, что многие комбинации выколоты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 15:10 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
_моднаходим пересечение 5х1000 и вуаля - результат (ессно все объед. в один запрос) Ну ТС про это и говорит - "пересечение нескольких множеств порядка 1 млн записей". Это, конечно, совсем не " д.б.мгновенно" :) Но и оценки в десятки минут мне кажутся завышенными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 15:24 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SergSuperможет, да и должен быть, но гуппа товарищей хочет видеть только атрибуты, мне это не объяснить, аналитики согласовывали и обещали без меня платежные документы - это операции. Главный признак (и индекс) - дата. Тем самым поиск можно резко ограничить периодом. А все поля можно храниить в clob через разделитель с тегами. Поиск внутри периода полным перебором будет быстрым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 16:24 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинНу ТС про это и говорит - "пересечение нескольких множеств порядка 1 млн записей". Порядка тысяч - это не много ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 16:25 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SergSuperТаблица сущностей (т.е. к чему атрибуты относятся) порядка 100млн записей, где-то около 100 видов атрибутов, одновременно используется в среднем 10. Если таблица сущностей 100млн, то таблица значений атрибутов - 1млрд? SergSuper спасибо, но у меня не настолько все плохо) А насколько? Покажите наконец Вашу структуру таблиц, индексы, текст и план запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 16:53 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Чтото задача все больше пахнет хранилищем. Можно ли потребовать что источник только для чтения? иными словами что пользователи не увидят последних изменений? Если так, то жизнь становится гораздо легче. Огласите вашу СУБД (версии редакции) У Oracle bitmap индексы в аккурат под ваши условия. Суть: делаем индекс на каждое искабельное поле. Он маленький т.к. содержит данные - на поле "имя": Сергей - отсюда и досюда, на поле "год" 1984 отсюда и до сюда и т.д. То бишь сервер перед выполнением запроса легко прочитает их все, и перемножит в памяти оставив список id результирующей выборки. Но такие индексы очень хреново обновляются. Далее: полное сканирование получившейся таблицы (или матвьюхи неважно), особенно если она сжата никак не должно занимать десятки минут, на приличном железе. Хотя мгновенным и не назовешь. При отсутсвии требований к оперативному обновлению, создавать индексы вам помешает только совесть и дефицит места на диске. Тут требуется работа с пользователями - человек создание шаблонное. Проанализируйте пользовательские запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 17:43 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
DirksDRSergSuperТаблица сущностей (т.е. к чему атрибуты относятся) порядка 100млн записей, где-то около 100 видов атрибутов, одновременно используется в среднем 10. Если таблица сущностей 100млн, то таблица значений атрибутов - 1млрд? SergSuper спасибо, но у меня не настолько все плохо) А насколько? Покажите наконец Вашу структуру таблиц, индексы, текст и план запроса.а , ну вот в среднем 10^9 значений в EAV; 10^10 дублетов, 10^11 триплетов. если вам нравится 10^12 - можете добраться до квадруплетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 20:19 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
DirksDRSergSuperТаблица сущностей (т.е. к чему атрибуты относятся) порядка 100млн записей, где-то около 100 видов атрибутов, одновременно используется в среднем 10. Если таблица сущностей 100млн, то таблица значений атрибутов - 1млрд? SergSuperспасибо, но у меня не настолько все плохо) А насколько? да я как бы лет 20 БД занимаюсь, таблички делать научился)DirksDRПокажите наконец Вашу структуру таблиц, индексы, текст и план запроса.убыл в командировку "в поля", под рукой нет средств чтоб показать план, через неделю так что структура самая примитивная - ссылка на документ, ссылка на счет (т.е. привязываются либо к счетам, либо к документам), ссылка на код атрибута, ну и сами сами значения в виде числа, даты, строки и ссылки на некий справочник, значение строкой считается всегда счетов около 20 млн, документов за сотню структура постепенно наполняется, сейчас думаю млрд еще нету, наверное и сотни млн тоже, запустил count(*) - сегмент отката переполнился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 20:49 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
_модSergSuperможет, да и должен быть, но гуппа товарищей хочет видеть только атрибуты, мне это не объяснить, аналитики согласовывали и обещали без меня платежные документы - это операции. Главный признак (и индекс) - дата. Тем самым поиск можно резко ограничить периодом. А все поля можно храниить в clob через разделитель с тегами. Поиск внутри периода полным перебором будет быстрым.ну как бы есть задачи выбрать нужные документы за год, а в день порядка миллиона документов ну и со счетами не получится я вот думал - если хранить в clob через разделитель с тегами - нельзя ли как-то будет полнотекстовым поиском пользоваться? я просто с ним никогда дела не имел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 20:55 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SERG1257Чтото задача все больше пахнет хранилищем.Если хранилище - это некий отдельный продукт, который надо покупать - буду очень благодарен если назовете какой-нибудь, желательно с ценой, желательно подороже - проще будет отмазаться )) сильная актуальность не нужна, возможно ночное обновление, собственно большинство атрибутов будет рассчитываться ночью версия 11.2.0.2.0 железяка AIX RISC System/6000 (но я в них не разбираюсь) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 21:08 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
SergSuper Если хранилище - это некий отдельный продукт, который надо покупатьЗа продуктами в соседний форум. http://www.sql.ru/forum/olap-dwh SergSuper сильная актуальность не нужна, возможно ночное обновлениеТо бишь вместо вьюх (будя возникнут какие нибудь ограничения) можно сделать обычные таблицы, удобные для запросов, заполняемые ночью. И ваш EAV, в данном случае - просто источник данных читаемый всего раз. Все не так плохо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2014, 21:26 |
|
||
|
Поиск по EAV
|
|||
|---|---|---|---|
|
#18+
Раз значения малоселективные, значит, сканирование таблицы значений начинает выглядеть сравнительно привлекательным вариантом. Чтобы не мурыжить миллиард записей, я бы в первую очередь подумал над партиционированием таблицы значений по id атрибута. Далее, возникает вопрос того, что некоторые операции типа like могут выполняться куда дольше, чем фильтрация по id записи (полученной из другого фильтра). На глаз при разумном количестве критериев оптимизатор должен справиться с построением хорошего плана, то есть я бы в первую очередь попробовал запрос типа Код: plsql 1. 2. 3. 4. Если без партиционирования, то следующий взгляд в сторону индекса или кластерного ключа по (id атрибута, id записи, значение) В три часа ночи делать тестовый пример и исследовать, честно говоря, не хочется. Может быть, завтра :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2014, 02:30 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38543925&tid=1540994]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 273ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...