Хранение “метаданных”

BooksНекоторое время назад я оценивал, сколько нужно хранить трафика, чтобы иметь более или менее полный слепок пользовательской активности в Рунете за 12 часов (отдельная записка посвящена тому, как этот трафик принимать и обрабатывать). Сейчас актуальная тема – хранение неких “метаданных”, под которыми подразумевается лог действий в некоторой “системе обмена сообщениями”. Лог доступен за период в шесть месяцев. Сколько требуется пространства для решения этой задачи?

Если оценивать нижний предел, то совсем немного. Естественно, всё зависит от того, насколько детальные метаданные требуется сохранять. Пусть записываются только факты “контакта” между пользователями, взятые с точностью до суток. Под “контактом” подразумевается отправка сообщений: если отправлено одно или более сообщений – значит, был контакт в заданные сутки (число сообщений и направление передачи – не уичтываем). Предположим, что типичный пользователь в сутки контактирует с десятком других пользователей (это вполне реальный показатель).

Итак, для перечисления интернет-пользователей всякой популярной системы достаточно 32 бит или четырёх байтов (2^32 это примерно 4,2 млрд), поэтому запись идентификаторов для контактов заданного пользователя потребует 4*10=40 байтов за сутки. Добавляем сюда отпечатки времени – 3 байта на запись (с точностью до секунд в сутках + служебные биты). Получаем: 40+3*10=70 байтов за сутки. Очень мало. (Можно легко засунуть сюда и тип используемых сервисов, кстати.)

Рассмотрим другое, более технологичное, представление, где контакт – это пара идентификаторов и метка времени (ID1,ID2,T): 4+4+3=11 байтов на запись, а записи хранятся в единой БД, общим потоком. Если посмотреть на такую структуру данных, взятую “по модулю” одного пользователя, то получим оценку в 110 байтов в сутки на пользователя (естественно, тут есть простор для оптимизации). То есть, за 180 дней (примерно шесть месяцев): 180*110=19800 – около 20 килобайт данных за сутки на каждого пользователя. Для десяти миллионов – всего-то 200 гигабайт (без оптимизации кодирования, заметьте).

Конечно, нужно сохранять персональную информацию о каждом пользователе, чтобы можно было сопоставить идентификаторы с персонами. Но эти данные редко изменяются, да и места совсем не занимают.

Другое дело, если требуется хранить подробный лог, в котором, например, отражено, как именно взаимодействовали пользователи, куда каждый из них ходил, сколько сообщений отправил, что нажимал, сколько времени провёл за тем или иным занаятием. В таком случае необходимый объём данных легко вырастет на два порядка. А ведь занятно, что и 20 терабайт (200Gb*100) – тоже не выглядят пугающе.

()

Похожие записки:



Далее - мнения и дискуссии

(Сообщения ниже добавляются читателями сайта, через форму, расположенную в конце страницы.)

Комментарии читателей блога: 4

  • 1. 23rd April 2014, 20:41 // Читатель Vitalie написал:

    Очень скоро мы даже не будем задавать себе вопрос “сколько” и “что”, потому что будет возможно практически “все”. Каждое (буквально) действие юзера будет мониториться и записываться, ненужное будет просто отсеиваться. Судя по тому, как растет возможность хранения больших данных, уже лет через 10 мы просто “не сможем” заполнить то место для хранения, которое у нас будет в распоряжении. Как то так. :)

  • 2. 23rd April 2014, 20:49 // Читатель зашел в гости написал:

    См. программу MAINWAY агентства нац. безопасности США, и их датацентр в штате Юта. Поговаривают о метаданных всех телефонных звонков в США за последние 5 лет – триллионах записей и Йоттабайтах данных…

  • 3. 23rd April 2014, 21:13 // Читатель sarin написал:

    вообще многие почтовые системы и системы мгновенных сообщений хранят не только метаданные, но и сами сообщения намного дольше полугода.

  • 4. 30th April 2014, 02:06 // Читатель jno написал:

    у меня в гугломыле около 15Г выделено и около 5 занято.
    и сколько там таких, как я?