Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

Хранение 10^30 записей в БД

#sql #база_данных


Мне нужно как то сохранить 
1 (30 нолей) записей, и осуществить поиск в них за примерно 20 секунд. 
Записи вида (ключ > значение)
Каким образом это дело осуществить то? Я понимаю одной базой тут не обойтись? =)
p.s.
записей: 1 000 000 000 000 000 000 000 000 000 000 
    


Ответы

Ответ 1



Ваше число записывается как 10^30; Терабайт - Это 10^12. Петабайт - 10^15. Эксабайт - 10^18. Рассмотрим стандартный телекомовский шкаф высотой 42U. В него можно поместить, при двухсторонней упаковке, 42 дисковые полки высотой 2U Предположим, что на одной полке стоит 24 диска по 4 Тб, итого, один шкаф хранит 42*24*4= 4032 Тб данных, или 4 Пб. Вам потребуется всего лишь 10^(30-15)/4=10^15/4 шкафов. Полагая, что шкаф занимает 1 квадратный метр, делаем вывод, что вам понадобится 10^15/4 квадратных метра. Это 10^9 / 4 квадратных километра. Площадь суши составляет 5*10^8 квадратных километра. Потребуется еще 1.5 планеты.

Ответ 2



Предположим, что ключ и значение компактны, по 8 байт им хватит. Итого, 16 байт на запись. 8×2×10^30÷1024÷1024÷1024÷1024 = 1,455191523×10¹⁹ ТиБ Считая нынче одиночный накопитель 3,5" равным 10Тб, а в 4U можно запихать 90 дисков (может чуть больше, это быстрый поиск в гугле), то даже без учёта всякого резервирования вам всё ещё нужны датацентры на 6,5 * 10^16 юнитов. Плюс ошибка конвертирования ТиБ в Тб, которая превращает число в 7,1 * 10^16. И это только на хранение, только сырых данных и без всякого резервирования. Вам бы сначала выяснить, достаточно ли у человечества ресурсов этот массив куда-то записать и только потом думать, как по нему искать за 20 секунд.

Комментариев нет:

Отправить комментарий