Главная проблема - найти применение для моей академической работы - PullRequest
1 голос
/ 26 ноября 2009

Top k проблема - поиск ЛУЧШИХ k (3 или 1000) элементов в БД

Существует фундаментальная проблема с реляционными БД, заключающаяся в том, что для поиска top k элементов необходимо обработать ВСЕ строки в таблице. Что делает его бесполезным на больших данных.

Я подаю заявку (для университетских исследований, на самом деле не мое изобретение, я реализую и пытаюсь улучшить оригинальную идею), что позволяет эффективно находить top k элементы, посещая только 3-5% сохраненные данные . Что делает это действительно быстро .

Есть даже пользовательских настроек , поэтому в некоторых доменах вы можете указать функцию, которая задает лучшее значение для пользователя, и функцию агрегирования, которая задает наиболее значимые атрибуты.


Например, БД автомобилей: атрибуты: (цена, пробег, возраст автомобиля, куб. См, топливо / миля, тип автомобиля ...) и пользовательские значения, например 10 * цена + 5 * топливо / миля + 4 * пробег + возраст автомобиля , (s) он не заботится о типе автомобиля и др. - это спецификация агрегации

Тогда для каждого атрибута (цена, пробег, ...) может существовать совершенно другая «функция-значение», которая задает наилучшее значение для пользователя. Так, например (цена: чем ниже, тем лучше, затем значение уменьшается, до $ 50 тыс., Где значение равно 0 (пользователь не хочет, чтобы автомобиль дороже, чем 50 тыс.). Пробег: другая функция, основанная на его / ее критериях, ответ и так далее ...


Вы можете видеть, что существует достаточно свободы для указания ваших предпочтений и в соответствии с ними, best k элементы в БД будут найдены быстро.

Я провел много бессонной ночи, думая о реальной юзабилити. Кто может извлечь выгоду из этого запроса БД? Но я не смог ничего поделать и придерживался только академической позиции только для записи. :-( Я надеюсь, что может быть реальным использованием для этого, но я не вижу никакой ....

.... У вас есть идеи, как использовать это в реальной жизни, в реальной проблеме и т. Д ...


I'd love to hear from You.

Ответы [ 3 ]

2 голосов
/ 26 ноября 2009

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

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

Новая идея: возможно, в вашем исследовании могут быть приложения для кластеризации, где вы будете использовать его для реализации быстрой k - Nearest Neighbor кластеризации по сложным критериям без необходимости каждый раз сканировать весь набор данных. Это приведет к более быстрой кластеризации больших наборов данных в соответствии с более сложными критериями при выборе K-NN для каждого узла данных.

1 голос
/ 26 ноября 2009

Существует неограниченное количество возможных сценариев реального использования. Получение значений top-n используется постоянно.

Но я очень сомневаюсь, что можно получить топ-n объектов без индекса. Индекс может быть создан только в том случае, если свойства, которые будут искать, известны перед поиском. И если это так, простой индекс в реляционной базе данных может обеспечить такую ​​же функциональность.

0 голосов
/ 26 ноября 2009

Он постоянно используется в финансовых организациях, вам нужно увидеть наиболее прибыльные активы / наименее прибыльные и т. Д.

...