Если я хочу сохранить 2 ^ 128 адресов IPv6 в файле, какой размер файла будет для всех адресов? - PullRequest
0 голосов
/ 10 мая 2018

Сколько данных в гигабайтах (ГБ) мне нужно выделить, если я хочу сохранить все 2 ^ 128 адресов IPv6 в файле? Я просто думаю, целесообразно или целесообразно сгенерировать такие данные для возможного хранения таблиц в MySQL, чтобы соответствовать элементу данных, чтобы отслеживать счетчик посещений с этого конкретного адреса IPv6.

например. IPv6 адрес => Счетчик посетителей

Или у кого-нибудь есть более практичное решение того, что я пытаюсь сделать? Мне нужно длительное хранение, поэтому временное хранение IPv6 не является частью вопроса.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Вам никогда не потребуется хранить все адреса 2 128 - подавляющее большинство из них не выделено. Если вы хотите сохранить 32-битный счетчик для каждого адреса, вам потребуется 2 100 ГБ!

Для чуть более реалистичного сценария, скажем, вы получите около 32 миллиардов уникальных IP-адресов (вы не получите так много). Вам нужно 16 байтов для адреса и 8 для 64-битного счетчика, то есть 24 B * 32 G = 768 ГБ. Скажем, 2TB, чтобы быть в безопасности и учитывать индексы и еще много чего.

32 миллиона уникальных IP-адресов? Может быть, 2 ГБ.

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

0 голосов
/ 10 мая 2018

Сколько данных в гигабайтах

Больше, чем у вас есть.Одни только IP-адреса в необработанном виде занимают 5–30 ГБ.Плюс место для прилавков.Даже если вы придумали некоторые радикальные методы сжатия / оптимизации, они, вероятно, все равно будут слишком большими.


более практичное решение того, что я пытаюсь сделать

Эх, лениво создавать экземпляры счетчиков?Не все IPv6-адреса назначены / назначены (и не будут в обозримом будущем)

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