Как стать автором
Обновить

Бэкенд Twitter перешёл на Protocol Buffers

Время на прочтение2 мин
Количество просмотров4.3K
Хотя основные копии пользовательских твитов хранятся в базах данных MySQL и Cassandra, компания также разворачивает дополнительное хранилище на Hadoop, которое можно будет использовать для аналитики и дополнительных программных приложений.

Информацию из этой системы можно запрашивать с помощью Java MapReduce или Pig, собственного SQL-подобного языка запросов Hadoop. В данный момент на этот бэкенд уже переведена система поиска, а в будущем появятся и другие приложения.

Отвергнув популярные технологии вроде XML, CSV и JSON, программисты Twitter выбрали в качестве формата для хранения данных бэкенда относительно неизвестный формат Protocol Buffers, разработанный в Google (он уже обсуждался на Хабре). Технические подробности реализации были оглашены представителями Twitter на конференции HadoopWorld во вторник.

Каждый день в базу Twitter добавляется 12 ТБ новых данных. С такими объёмами выбор правильного формата приобретает критическое значение. Комбинация Protocol Buffers, Hadoop и смежных технологий призвана решить эту проблему.

Каждый твит состоит из 17 полей в базе данных, шесть из которых имеют как минимум одно подполе. В будущем Twitter планирует добавить и другие подполя. В перспективе система хранения должна выдерживать и эффективно работать с триллионом твитов от миллиарда юзеров.

Вдобавок к пользовательскому контенту, для хранения в базу поступает и служебная информация из внутренних логов (более 80 типов операций, которые происходят в системе). Основанная часть этих данных агрегируется с помощью свободной технологии Scribe (разработка Facebook).

Преимущество Protocol Buffers перед XML становится очевидным на больших объёмах данных. По словам разработчиков Twitter, база в триллион твитов на XML может занимать примерно десять петабайт вместо одного. В JSON тоже хранится много лишней информации. На другом полюсе — CSV, где данные разделяются всего лишь запятыми. Здесь ничего лишнего, но трудно структурировать подполя.

Protocol Buffers не имеет этих недостатков. Кроме того, в нём автоматизирован процесс воссоздания структур данных. Как сказано в туториале по Protocol Buffers, достаточно однажды определить метод структурирования данных, после чего можно использовать специально сгенерированный код для простой записи и чтения структурированных данных в/из различных потоков и на разных языках.
Теги:
Хабы:
Всего голосов 47: ↑43 и ↓4+39
Комментарии43

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн