Как шкала времени запроса базы данных с размером базы данных?

StackOverflow https://stackoverflow.com/questions/4973855

  •  12-11-2019
  •  | 
  •  

Вопрос

Я недавно был недавно в OEIS (онлайн-энциклопедия целочисленных последовательностей) недавно, пытаясь посмотреть определенную последовательность, которую я имел.

Теперь эта база данных довольно велика.Веб-сайт утверждает, что если был напечатан Edition 2006 (! 5 лет), он был бы занимать 750 объемов текста.

Я уверен, что это тот же вопрос, который Google должен справиться.Но они также имеют распределенную систему, где они используют преимущества балансировки нагрузки.

Пренебрегающая балансировка нагрузки, однако, сколько времени требуется, чтобы сделать запрос по сравнению с размером базы данных?

или другими словами, что такое временная сложность запроса в отношении размера БД?

Редактировать: Чтобы сделать вещи более конкретными, предположим, что входной запрос просто смотрит вверх по ряду цифр, таких как:

1, 4, 9, 16, 25, 36, 49
.

Это было полезно?

Решение

Это сильно зависит от запроса, структуры базы данных, конкуренции и т. Д. Но в целом большинство баз данных найдут способ использовать индекс, и этот индекс будет либо каким-то структурой деревьев (см. http://en.wikipedia.org/wiki/b-tree для одного варианта), в котором время доступа к регистру пропорциональна журналу (n), или еще хеш, в котором время доступа к регистру Пропорционально O (1) в среднем (см. http://en.wikipedia.org/wiki/hash_function #Hash_tables для объяснения того, как они работают).

Таким образом, ответ обычно O (1) или O (журнал (N)) в зависимости от того, какой тип структуры данных используется.

Это может заставить вас удивляться, почему мы не всегда используем хеш-функции. Есть несколько причин. Хеш-функции делают его трудно получить диапазоны значений. Если функция HASH не удается распределять данные хорошо, возможно, чтобы время доступа стала O (n). Хэшей нужна изменение изменений изредка, что потенциально очень дорого. И log (n) растут достаточно медленно, что вы можете рассматривать его как разумно близко к постоянным во всех практических наборах данных. (От 1000 до 1 Petabyte он варьируется в зависимости от 500-х годов) и часто активно запрашиваемые данные показывают какую-то местность, которые деревьев делают лучшую работу в оперативной памяти. В результате деревьев несколько чаще встречаются на практике. (Хотя хэси ни в коем случае не редко.)

Другие советы

Это зависит от ряда факторов, включая реализацию базы данных, стратегию индексации, специфику запроса, доступное оборудование, конфигурация базы данных и т. Д.

Нет способа ответить на такой общий вопрос.

Правильно разработанная и реализованная база данных с терабайтами данных может фактически превзойти плохо разработанную небольшую базу данных (особенно, в частности, без индексации и то, что использует плохо выполнять несекретные запросы и такие как коррелированные подзапросы).Вот почему кто-то ожидает иметь большие объемы данных, необходимые для найма эксперта по проектированию баз данных для больших баз данных для выполнения Intial Design, не позднее, когда база данных велика.Вам также может потребоваться инвестировать в тип оборудования, необходимого для обработки размера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top