Top
k
проблем - търсене на НАЙ-ДОБРИТЕ k
(3 или 1000) елемента в DB
Има фундаментален проблем с релационните DB, че за да се намерят top k
елемента, има нужда да се обработят ВСИЧКИ редове в таблицата. Което го прави безполезен при големи данни.
Създавам приложение (за университетски изследвания, не всъщност мое изобретение, внедрявам и се опитвам да подобря оригиналната идея), което ви позволява ефективно да намирате top k
елемента, като посещавате само 3-5% от съхранените данни. Което го прави наистина бърз.
Има дори потребителски предпочитания, така че в някои домейни можете да посочите функция, която определя най-добрата стойност за потребителя, и функция за агрегиране, която определя най-важните атрибути.
Например DB на автомобили: атрибути: (цена, пробег, възраст на колата, ccm, гориво/миля, тип кола...) и потребителски стойности например 10*цена + 5 *гориво/миля + 4*пробег + възраст на колата, той не се интересува от вида на колата и други. - това е спецификация за обобщаване
След това за всеки атрибут (цена, пробег, ...), може да има напълно различна стойност-функция, която определя най-добрата стойност за потребителя. Така например (цена: по-ниска, толкова по-добра, след това стойността намалява, до $50k, където стойността е 0 (потребителят не иска кола, по-скъпа от 50k). Пробег: друга функция въз основа на неговите/нейните критерии, ans така нататък...
Виждате, че има доста свобода да посочите вашите предпочитания и според това best k
елемента в DB ще бъдат намерени бързо.
Прекарах много безсънни нощи, мислейки за реалната използваемост. Кой може да се възползва от тази заявка db? Но не успях да измисля нищо и се придържах само към академична позиция само за писане. :-( Надявам се, че може да има някаква реална употреба за това, но не виждам такова....
....ИМАТЕ ли някаква идея как да използвате това в реалния живот, реален проблем и т.н.
I'd love to hear from You.