Pull to refresh

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

Reading time2 min
Views4.2K
Хотя основные копии пользовательских твитов хранятся в базах данных 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, достаточно однажды определить метод структурирования данных, после чего можно использовать специально сгенерированный код для простой записи и чтения структурированных данных в/из различных потоков и на разных языках.
Tags:
Hubs:
+39
Comments43

Articles