febb: (Default)
[personal profile] febb
https://febb.livejournal.com/3401072.html

Еще раз: имеется 4 миллиарда записей с уникальным ID к примеру 20 байт.
Таким образом один только индекс по идее должен занимать в памяти
(20 + 4)х4,000,000,000 = 96Gb, точнее больше с учетом накладных расходов.
Ни в какую память рельно не влезает. Как впихнуть его скажем в 1MB и меньше?

Решение никто не придумал, а оно крайне простое и удивительно эффективное...


Идея очень простая!

Разобьем ID примерно пополам, так что уникальных ID1 и ID2 будет примерно по 64K.
Сделаем две таблицы каждая по 64K х 10 байт, что примерно чуть больше 1 Мб.
А составной индекс будет просто из двух частей этих таблиц: ID1 << 16 + ID2
Скорость индексирования будет в несколько раз выше (может быть в 8 раз),
а размер индекса в память в 100,000 раз меньше!
Можно разбить и на 4 части и т.д. Есть метод как сделать это с гарантией.
Простое решение как видите и меня 15 лет назад это очень впечатлило.

Мне даже дали грамоту от владельца компании и премию в $250. :)))
Хахаха! Какое изощреное издевательство!
Через год я оттуда ушел...
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

febb: (Default)
febb

March 2022

S M T W T F S
  1 2 345
6 7 89 101112
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 10th, 2026 04:50 am
Powered by Dreamwidth Studios