Нужен совет по индивидуальной структуре данных против использования БД в памяти? - PullRequest
0 голосов
/ 26 января 2011

Я пишу программу сетевого планирования, подобную программе на Python 2.6+, в которой у меня сложное требование к очереди: очередь должна хранить пакеты, должна извлекаться по метке времени или по идентификатору пакета в O (1), должна иметь возможность получить все пакеты ниже определенного порога, сортировка пакетов по приоритетам и т. д. Он также должен вставлять и удалять с разумной сложностью.

Теперь у меня есть два варианта:

  1. Объедините несколько структур данных и синхронизируйте их должным образом, чтобы выполнить мое требование.
  2. Используйте некоторую базу данных в памяти, чтобы я мог легко выполнять все виды операций.

Есть предложения, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 26 января 2011

A Куча Фибоначчи может быть полезна, потому что (цитата из статьи):

Операции вставки, поиска минимума, уменьшения ключа и работы слияния (объединения) в постоянной амортизациивремя.Операции удаления и удаления минимальной работы за O (log n) амортизированного времени.Это означает, что, начиная с пустой структуры данных, любая последовательность операций из первой группы и b операций из второй группы займет O (a + b log n) времени.В биномиальной куче такая последовательность операций заняла бы O ((a + b) log (n)) времени.Таким образом, куча Фибоначчи лучше, чем биномиальная куча, когда b асимптотически меньше, чем a.

0 голосов
/ 26 января 2011

База данных - это всего лишь несколько индексов и причудливых алгоритмов, обернутых вокруг единой структуры данных - таблицы.У вас нет большого контроля над тем, что происходит под капотом.

Я бы попробовал использовать встроенные структуры данных Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...