LINUX.ORG.RU

История изменений

Исправление kilokolyan, (текущая версия) :

Была. hash_map< docid, set* >. Стоимость нахождения числа лайков для данного docid - O(1). И даже вариант который Вы сами упомянули в описании с std::map будет лучше чем B+tree с compound key - там O(log(count(docid)).

Требовалось это хранить в Btree. У меня нет столько ОЗУ, чтобы запихать все лайки всех пролайканных объектов в хештаблицы в памяти. Ну это надо городить выгружалку-загружалку каждой хештаблицы или её региона хотя-бы. А при ресайзе хештаблицы придётся переписывать её ВСЮ, что жопа.

Незнаю насколько O(log(count(docid)) дешевле сильноветвистого B+-Tree, надо мерять.

Исходная версия kilokolyan, :

Была. hash_map< docid, set* >. Стоимость нахождения числа лайков для данного docid - O(1). И даже вариант который Вы сами упомянули в описании с std::map будет лучше чем B+tree с compound key - там O(log(count(docid)).

Требовалось это хранить в Btree.

Незнаю насколько O(log(count(docid)) дешевле сильноветвистого B+-Tree, надо мерять.