powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Многокритериальный поиск в очень-очень большой базе
25 сообщений из 309, страница 9 из 13
Многокритериальный поиск в очень-очень большой базе
    #33959700
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Last_AlienКак Вы относитесь к оптимальным бинарным деревьям поиска и построению системы на их основе?Деревья - это хорошо. :)

Last_AlienДля примера пересечения 2млн.записей с атрибутом 1 и 10тыс.записей с атрибутом 2 и их пересечением в 100 записей, можно реализовать систему, поднимающую с диска максимум 122 записи при условии хранения значений атрибутов в самих записях. Увеличение кол-ва записей с атрибутами при том же их пересечении в 100 раз приведет к росту необходимой выборки до 138 записей.Учитываете ли Вы тот факт, что по условиям задачи у нас не два атрибута, заранее известных, для которых мы можем построить одно дерево (или два пересекающихся дерева), а 1000 атрибутов, и мы не знаем заранее, какие именно из них потребуются пользователю в запросе...
Один пользователь возьмет из этой тысячи своих два атрибута, другой - два, три или сразу пять других. Поэтому просто обычное дерево или тривиальное решение под два конкретных атрибута нам не подходит. Я не в курсе - возможно у Вас есть решение, не завязанное на количество атрибутов, но из Вашего объяснения это не ясно.
Вы слышали о такой структуре данных: k-d Tree? Она на каждом шаге построения дерева делит пространство по какому-то одному измерению. И это позволяет быстро локализоваться в пространстве, даже если оно многомерное. Однако, эта структура перестает эффективно работать при очень большой размерности пространства и она очень плохо работает с бинарными атрибутами, ведь их можно поделить только один раз.
И главное - я не видел ни одного адаптивного и при этом гарантировано логарифмического варианта структуры данных, основанной на идее k-d дерева. :( А динамическое добавление (изменение) информации требуется по условиям задачи.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959730
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovНа практике это "переменное количество" на счет "раз" сворачивается в фиксированное, а данные уплотняются. Ну и дальше, как и сказал Последний Алиен, в ход идут оптимальные деревья и битовые маски.Снижение размерности - хорошая идея, которую часто обсуждают в статьях, но здесь нужно локальное снижение размерности, так как в разных областях общего 1000-мерного пространства есть свои и совсем разные гиперкубы, в которые упакованы не все, но многие точки этой области.
Уверяю Вас, если именно для ВСЕХ записей как-то попытаться снизить размерность одним общим способом сразу с 1000 и до разумно маленькой величины - то это породит кучу очень медленных поисков на пользовательских запросах. Данные неоднородны, хотя они и не случайны (поэтому говорить о снижении размерности как о методе можно).
Если у Вас есть идеи именно по адаптивному алгоритму, который бы сам снижал размерность для разных групп точек, делая это по-разному в разных областях простанства - что же, буду рад услышать, если согласны поделится идеями. :)
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959744
shuklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysprgТак же интересно, есть ли люди, которым приходилось решать конкретно задачу многокритериального поиска в сильно разряженной таблице с тысячами "столбцов" по сотням миллионов записей. Пусть и не с таким рейтом запросов...Привет, мне приходилось. Моя СУБД с таким работает, вот только решение несколько неадекватное, я отказался от таблиц. Моя субд - сетевая. Однако для вашей цели не подойдет - однопользовательская. ИМХО следует серьезно обдумать вариант реализации собственного движка под свою задачу.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959745
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, shuklin!
Ты пишешь:

shuklins> Привет, мне приходилось.урааааа!!!
шуклин живой!
я переживал.
честно.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959757
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antandПожалуйста, ну очень Вас прошу, приведите хотя бы краткую постановку задачи с примерами и подайте ее людям для обсуждения. Ну, если не хотите ваших страшных тайн открывать, на которых Вы деньги будете зарабатывать на миллионах пользователей, приведите пример из другой области.Еще раз привожу пример.
----------------------------------------------------------------------
Для начала у нас есть база данных, в которой каждая запись содержит всего три атрибута - "тип товара", "язык" и "город". Тип товара может быть, например, "книга", "фильм", "песня" или, например, "атомобиль". Для медиа-продукции второй атрибут, "язык", говорит нам, на каком языке издана книга, какой язык в переводе фильма и т.п. Третий атрибут - это город, где этот товар выставлен на продажу.
У нас есть 100 миллионов записей о товарах. Из них:
- 2 миллиона записей относятся к городу "Нью-Йорк",
- 100 тысяч разных записей имеют отношение к русскому языку,
- 10 тысяч записей имеют тип "книга".
Но всего-навсего 100 книг на русском языке продаются в Нью-Йорке, а остальные - нет. Их и хочет найти наш пользователь.
Задача тривиальная, если мы заранее, зная специфику пользовательских запросов специально возьмем и построим в какой-нибудь существующей системе индекс по сочетанию полей {"тип товара", "язык", "город"}.
А теперь переходим к полной постановке задачи - снимаем ограничение на количество атрибутов. Этих атрибутов - около тысячи. Причем они добавляются в процессе работы системы, время от времени. И мы не знаем заранее, КАКИЕ именно запросы будут интересны пользователю. У нас очень много пользователей с разными интересами и каждый из них ищет что-то свое, выбирая произвольные атрибуты из 1000 доступных...
----------------------------------------------------------------------
Что нам предлагают коммерческие СУБД в такой ситуации? В лучшем случае они нам предлагают построить индексы по каждому из атрибутов в отдельности (или индекс по паре {ID атрибута, значение}).
И затем они будут оъединять списки или битовые маски, выполняя сложный запрос, включающий больше одного атрибута.
В данном примере они возьмут самый короткий список - список книг (10 тысяч идентификаторов записей в базе) и начнут проверять, присутствуют ли эти же ID записей в списке русскоязычных товаров (100 тысяч элементов) и в списке продающихся в Нью-Йорке (2 миллиона элементов). Как именно это делается - слиянием ли списков, или пересечением битмапов - не важно.
В любом случае это очень-очень медленная работа ПО СРАВНЕНИЮ С ИТОГАМИ - со 100 результирующими записями.
Так происходит потому, что не зная заранее, по каким сочетаниям атрибутов будет искать пользователь, они вынуждены плясать от ОТДЕЛЬНЫХ атрибутов.
----------------------------------------------------------------------
Нужен же "пространственный" индекс, который даже в 1000-мерном пространстве быстро найдет пересечение и поднимет в память не намного больше данных, чем 100 результирующих записей. Он считает больше - чудес же не бывает, но не намного...
Однако "стандартные" виды таких индексов 1). отсутствуют практически во всех коммерческих СУБД (кроме Postgress?) 2). не рассчитаны на пространства большой размерности 3). не рассчитаны на некоторые виды атрибутов, например, на бинарные.
И как я понял за последние 5 лет никаких сдвигов в этой области в коммерческих СУБД не произошло и не наметилось. Значит нужно искать свое решение. Не так ли?
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959760
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мимопроходящийа она всё не стоит и не стоит...Мимопроходящий, когда же ты наконец пройдешь мимо? Или сложности с выбором направления движения?
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959768
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft sysprgИ не предлагайте решения по сведению 1000-мерного пространства к двумерному через тривиальную укладку в две таблицы.А вы предлагаете хранить Терабайты пустоты?Нет, даже если хранить по столбцам, как предлагают в Sybase IQ, то этого не будет. Только индексации пространственной у них все равно при этом нет, к сожалению - поэтому решив проблему не хранения пустоты и динамического добавления столбцов, они увы не решают проблему быстроты поиска (хотя делают ad hoc поиск быстрее обычных СУБД, как они утверждают иногда в десятки и сотни раз быстрее).
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959769
shuklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
шуклин живой!Та куда ж я денусь. ))) Ващето лето было продуктивным. Несколько версий СУБД Cerebrum, Медовый месяц в симферополе под традиционными взрывами Украинских складов ... ))) А на самом деле просто время на флейм нету ((( Если чего - лучче меня почтой пинать. Всегда объясню как Cerebrum внутре устроен и зачем там неонки.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959771
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, sysprg!
Ты пишешь:

sysprgs> Мимопроходящий, когда же ты наконец пройдешь мимо?
s> Или сложности с выбором направления движения?гюльчатай, открой личико, а?! (С)
вдруг я тебя полюблю.
с разбегу.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959773
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysprg miksoft sysprgИ не предлагайте решения по сведению 1000-мерного пространства к двумерному через тривиальную укладку в две таблицы.А вы предлагаете хранить Терабайты пустоты?НетТаки объясните, пожалуйста, чем именно не нравится такой метод?
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959789
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftТаки объясните, пожалуйста, чем именно не нравится такой метод?"Физикой" процесса выполнения запроса. Возьмем мой пример, который приводился здесь. Выполняя поиск в предложенной Вами базе, ядро классической СУБД построит сначала список записей по "самому короткому" значению - список всех книг (10 тысяч элементов). Это компактная маленькая структура. Но затем они объединят его уже с более крупным и менее компактным списком записей, для которых "язык" = "русский" (100 тысяч элементов). Как именно они это сделают - не важно. Тут уже много работы, но это еще не самое страшное. У них останется, скажем, 1000 идентификаторов записей (книг на русском языке). Условно так скажем целых чисел, равномерно размазанных по числовой оси на интервале [0; 10^8]. И вот теперь они возьмут последний список из 2 миллионов элементов и начнут его сливать с этим коротким из 1000... Тут-то все и накроется (по быстродействию). А у нас в параллель идут десятки тысяч и сотни тысяч таких запросов (если Вам не нравится моя цифра в миллион).
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959798
shuklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysprg И вот теперь они возьмут последний список из 2 миллионов элементов , увидят что многовато будет (для этого ведется статистика) и сделают full scan по 1000 записей.

Ващето ваша задача решается за O(1) но это O в практических случаях скорее всего окажеться больше чем обычные O(NlnN)
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959822
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft sysprgИ не предлагайте решения по сведению 1000-мерного пространства к двумерному через тривиальную укладку в две таблицы.
А вы предлагаете хранить Терабайты пустоты?

В силу своей архитектуры Sybase IQ не хранит пустоту, очень быстро обрабатывает ad-hoc запросы, в том числе звездообразные, допускает несколько индексов на одну колонку и поддерживает до 45,000 колонок в таблице ("There may be
performance penalties with more than 10,000 columns in a table"). Позволяет работать в кластере с shared disk архитектурой. Достаточно неплохое решение для данной задачи.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959840
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysprg Чернышев Андрей ЛеонидовичА почему Вы, sysprg, говорите про "индекс по одному упорядоченному набору полей" ? И не уточняете - сколько в среднем "атрибутов" имеют не пустые значения в каждой Вашей "динамической записи" ? Может всего 5 (5!=120). Проведите простейший эксперимент по поддержке n! сочетаний при индексировании "динамических записей", где n - число непустых атрибутов.
Очень мало атрибутов (единицы) присутствуют именно в каждой записи. Однако многие атрибуты заполнены у большинства записей - таких около двух десятков. Не вижу между ними разницы с точки зрения ускорения поиска (атрибут заполнен у большинства записей или он заполнен строго у всех записей).
А еще есть несколько десятков атрибутов, заполненных более чем у одного процента записей. Однако, при ста миллионах записей (прогнозируемое наполнение базы уже в первые годы работы) это означает, что несколько десятков атрибутов заданы для 1-5 миллионов записей.
Остальные же атрибуты действительно "мало популярны" - им соответствует сотня, тысяча или десятки тысяч записей (из 100 миллионов).
Если смотреть на значения атрибутов, то увы - есть такие значения, для которых объем выборки - миллионы или даже десятки миллионов записей. И эти значения будут часто фигурировать в запросах. Однако их пересечения могут быть удивительно компактны.
В качестве иллюстрации я привел вымышленный пример базы товаров для какого-нибудь "ebay" - когда, например, есть 100 тысяч медиа-товаров, в атрибутах которых значится "русский язык", есть 10 тысяч товаров, которые классифицированы как "книга" (не важно, на каком языке) и 2 миллиона товаров выставлены на продажу в городе "Нью-Йорк". Однако в Нью-Йорке выставлены на продажу всего-навсего 100 русскоязычных книг...
Но мы не знаем заранее, что заинтересует пользователя - и у нас нет заранее построенного индекса для свертки "город" * "язык" * "тип товара". Разных пользователей интересуют разные срезы...

Чернышев Андрей ЛеонидовичЧто касается "добавления атрибутов в процессе работы", то это ничего не усложняет, если всегда индексируются все сочетания. Можно подумать об "интеллекте", основанном на простых статистиках, и не индексировать "маловостребованные" сочетания (при необходимости проиндексировать). И если уж распределять нагрузку, то именно по индексированию сочетаний.Да, возможно, что динамическая и при этом автоматическая (от статистики запросов) генерация нужных индексов - это хорошая идея.
Но это не панацея - запросов будет много и они разнообразны - поэтому нужна и базисная структура, которая бы в любом случае неплохо справлялась с задачей БЕЗ дополнительных "частных" индексов. Если просто динамически строить индексы (и даже уничтожать старые по какому-нибудь LRU), то из-за разнообразия пользовательских запросов все время уйдет на генерацию этих самых индексов. И никакой памяти под них не хватит.

Денормализация - вот что вас спасет. Сколько может быть атрибутов у одного товара ? ну десять, ну двадцать, ну тысяча. Заведите таблицу товаров, с тысячей полей для аттрибутов, и специальную таблицу переполнения для того 0.00001 % товаров с более чем 1000 атрибутов. У клиентов хранится описатель товаров, в котором для каждого товара прописаны возможные аттрибуты и колонки, в которых их искать - чтобы не было запросов вида "col100=12345 OR col101 = 12345 OR ..."
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959846
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Выбегалло!
Ты пишешь:

ВыбегаллоВ> Денормализация - вот что вас спасет.
зуб даёшь, что аффтар знаком с нормализацией, как таковой вааще?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959851
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> А вы у нас, стало быть, столичная штучка.

Комплексуете? Бросьте. Зато, видимо, Вы первый, кому социальные службы по работе с умственно отсталыми нашли работу dba.

> "пикобайтным" хранилищем

Дружище, "пико" - это 10^-12. Оптимисты работают в этой социальной службе. И работодатель Ваш - оптимист.

Ах, пардон, обшибся. Всего лишь петабайтное хранилище. Ну откройте же мне, отсталому дба из мухосранска - что сказал вам знакомый провайдер по поводу бэкапов на ленту ? типа business contingency план у него имеется ? и это хороший план, забористый ? позволяет влехкую восстановить его петабайтный варехауз буквально за пару минут, пользуясь парой стримеров и дисководом для пятидюймовых дискет ? Не томите, проковыряйте шашкой своей мудрости дырку в черной завесе моего невежества, дабы яркий свет сокровенного знания бэкапов озарил убогий ландшафт социальных служащих !
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959853
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Привет, Выбегалло!
Ты пишешь:

ВыбегаллоВ> Денормализация - вот что вас спасет.
зуб даёшь, что аффтар знаком с нормализацией, как таковой вааще?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

ну, на гугле ж его не забанили ?
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959864
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
shuklin sysprg И вот теперь они возьмут последний список из 2 миллионов элементов , увидят что многовато будет (для этого ведется статистика) и сделают full scan по 1000 записей.Да, согласен - может быть и так. И так как именно пространственную локализацию при хранении записей они не учитывают (записи упорядочены в лучшем случае по первичному ключу), то эти 1000 записей окажутся равномерно раскиданными по всем нодам кластера (или по всему диску на одной машине) и эта выборка будет очень медленной.

shuklinВащето ваша задача решается за O(1) но это O в практических случаях скорее всего окажеться больше чем обычные O(NlnN)Каким образом?
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959871
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВыбегаллоВ силу своей архитектуры Sybase IQ не хранит пустоту, очень быстро обрабатывает ad-hoc запросы, в том числе звездообразные, допускает несколько индексов на одну колонку и поддерживает до 45,000 колонок в таблице ("There may be performance penalties with more than 10,000 columns in a table"). Позволяет работать в кластере с shared disk архитектурой. Достаточно неплохое решение для данной задачи.Согласен, что возможно это лучшее решение из стандартных (судя по описаниям на сайте).
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959884
sysprg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВыбегаллоДенормализация - вот что вас спасет. Сколько может быть атрибутов у одного товара? ну десять, ну двадцать, ну тысяча.Если говорить об этом примере с товарами - то у каждого конкретного товара действительно будет мало атрибутов - обычно два-три десятка, ну пара сотен от силы... Только у разных товаров - эти атрибуты разные. Зачастую они разные даже в одной группе по классификации, из-за многообразия мира и из-за неполноты информации. И многие из атрибутов (не все, конечно) характерны для разных групп товаров - они общие семантически. А значит, пользователь может захотеть поискать по ним. Это я к тому, что выделить особенно важные характеристики (кроме нескольких общих) или предсказать заранее основные варианты поиска в общем случае не удастся, как и сократить число атрибутов.

ВыбегаллоЗаведите таблицу товаров, с тысячей полей для аттрибутов, и специальную таблицу переполнения для того 0.00001 % товаров с более чем 1000 атрибутов. У клиентов хранится описатель товаров, в котором для каждого товара прописаны возможные аттрибуты и колонки, в которых их искать - чтобы не было запросов вида "col100=12345 OR col101 = 12345 OR ..."Что это даст-то мне с точки зрения более умной индексации? Все равно дальше будут построены индексы только по отдельным колонкам и еще по паре десятков самых типовых сочетаний, которые я угадаю заранее, логически поразмыслив над проблемной областью задачи.
Но затем многие пользователи начнут свою работу по добыче полезных для себя редких сочетаний данных подавая заранее не предсказанные мной запросы (часто простые, но не продуманные заранее - это невозможно) и база данных начнет объединять списки перелопачивая "весь диск" или все ноды в кластере.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959894
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> откройте

;) Расслабьтесь. Выдохните. Дискуссии с Вами меня перестали развлекать. Очень обяжете, если сделаете вид, что мы не знакомы, - сэкономите мне кучу времени.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959896
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вам еще раз настоятельно рекомендую освежить в памяти принципы работы bitmap индексов в Оракле или EVT индексов у DB2. Индексируйте таким образом все колонки с атрибутами и тогла БД сможет просто применяя битовые операции быстро найти необходимые пересечения.
Код: plaintext
1.
2.
--
Антон
Per rectum ad astrum
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959900
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysprg ВыбегаллоДенормализация - вот что вас спасет. Сколько может быть атрибутов у одного товара? ну десять, ну двадцать, ну тысяча.Если говорить об этом примере с товарами - то у каждого конкретного товара действительно будет мало атрибутов - обычно два-три десятка, ну пара сотен от силы... Только у разных товаров - эти атрибуты разные. Зачастую они разные даже в одной группе по классификации, из-за многообразия мира и из-за неполноты информации. И многие из атрибутов (не все, конечно) характерны для разных групп товаров - они общие семантически. А значит, пользователь может захотеть поискать по ним. Это я к тому, что выделить особенно важные характеристики (кроме нескольких общих) или предсказать заранее основные варианты поиска в общем случае не удастся, как и сократить число атрибутов.

ВыбегаллоЗаведите таблицу товаров, с тысячей полей для аттрибутов, и специальную таблицу переполнения для того 0.00001 % товаров с более чем 1000 атрибутов. У клиентов хранится описатель товаров, в котором для каждого товара прописаны возможные аттрибуты и колонки, в которых их искать - чтобы не было запросов вида "col100=12345 OR col101 = 12345 OR ..."Что это даст-то мне с точки зрения более умной индексации? Все равно дальше будут построены индексы только по отдельным колонкам и еще по паре десятков самых типовых сочетаний, которые я угадаю заранее, логически поразмыслив над проблемной областью задачи.
Но затем многие пользователи начнут свою работу по добыче полезных для себя редких сочетаний данных подавая заранее не предсказанные мной запросы (часто простые, но не продуманные заранее - это невозможно) и база данных начнет объединять списки перелопачивая "весь диск" или все ноды в кластере.

Еще раз :
1. заводите классификатор товаров. каждому товару приписываете атрибут. Атрибут имеет уникальный ключ, отличный от всех других атрибутов, и номер столбца в таблице фактов. Классификатор выдается каждому юзеру в локальное пользование (вытягивается клиентским приложением)
2. пользователь запрашивает товар с атрибутами 1, 10 и 121. Допустим, эти атрибуты могут храниться в колонках 1, 20 и 54. При формировании запроса приложение учитывает, в каких колонках эти атрибуты имеются, и создает SELECT * from tovar where col1 = 1 and col20 = 10 and col54=121. Уверяю вас, данный запрос при наличии индекса на каждую колонку (и up to date статистики по этому индексу) будет летать - сначала выберется наиболее избирательный индекс, затем выберется сотня строк, потом , если СУБД не позволяет использовать одновременно 2 индекса, банально проверятся значения в остальных колонках - короче, совершенно стандартная ситуация, давно и прочно отработанная.
Проблема как раз в неуникальности атрибутов для нескольких товаров - необходимо следить, чтобы атрибуты одного товара не попадали в одни и те же колонки, но эта проблема разрешима.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959902
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> откройте

;) Расслабьтесь. Выдохните. Дискуссии с Вами меня перестали развлекать. Очень обяжете, если сделаете вид, что мы не знакомы, - сэкономите мне кучу времени.

СЗ.
...
Рейтинг: 0 / 0
Многокритериальный поиск в очень-очень большой базе
    #33959934
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Random_GoodmanИ последнее: вы меня тока не бейте, но у меня почему-то очень сильное подозрение, что если взять идею дорогого аффтора, стереть нафиг его проектирование, почесать репу и сделать свое, то в результате получится не миллион, а сто и не кластер а комп а может и вообще на WinXp Home Edition+ mySQL запашет прекрасно...
Честно говоря, у меня тоже такая мысль бродит.

Ну да ладно.
Что мне показалось неправильным. Разряженная таблица с тысячами полей. Кажется во всех базах есть ограничение на количество полей в таблице, следовательно реально заданую структуру можно сделать только на вариациях модели Тенцера. И уж совсем меня привело в шок требование добавления полей в таблицу

Ну да ладно-2.
Если это действительно клевая идея, то вмешаются факторы политические и экономические. Конкуренты создадут аналогичный продукт и будет не 1 млн запросов в секунду, а тысяч 5-10. А Китай запретит ее использование на своей территории
...
Рейтинг: 0 / 0
25 сообщений из 309, страница 9 из 13
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Многокритериальный поиск в очень-очень большой базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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