Сколько байт памяти занимает твит?

#string #memory

#строка #память

Вопрос:

140 символов. Сколько памяти это займет?

Я пытаюсь подсчитать, сколько твитов может вместить мой большой экземпляр EC2 Mongo DB.

Ответ №1:

Twitter использует сообщения в кодировке UTF-8.

Кодовые точки UTF-8 могут иметь длину до шести в четыре октета, что делает максимальный размер сообщения 140 x 4 = 560 8-битных байт.

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

e: Twitter успешно разрешил мне опубликовать сообщение:

™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™™

Да, это 140 символов торговой марки, каждый из которых имеет три октета в формате UTF-8

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

1. UTF-8 кодирует кодовые точки, а не глифы. Каждая кодовая точка может содержать до 4 октетов в UTF-8, UTF-16 и UTF-32. Кодировка CESU-8 может использовать 6 октетов для одной кодовой точки, но это происходит только из наивного кодирования UTF-16 в UTF-8 и фактически не является допустимым UTF-8.

2. Терминология и математика обновлены, спасибо за разъяснение.

3. Стоит отметить, что каждый твит не состоит из 140 символов, и что по мере того, как пользовательская база Twitter становится все более интернациональной (или нет), большие кодовые точки будут использоваться чаще (или реже).

4. Хотя это верно, вопрос касается размера в контексте определения требований к хранилищу, поэтому правильнее думать о максимальном размере, а не о среднем размере.

Ответ №2:

Еще в сентябре инженер Twitter провел презентацию, в которой предположил, что на твит приходится около 200 байт.

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

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

1. Twitter использует кодировку Unicode в формате UTF-8 — 140 символов не будут означать 140 байт, если вы не ограничиваете все возможные сообщения нижним диапазоном 127 ASCII.

2. @Charles: mail-archive.com/twitter-development-talk@googlegroups.com / … говорит, что это просто количество байтов. Изменилось ли что-нибудь с тех пор?

3. в их текущих документах API говорится, что они подсчитывают кодовые точки, но не устанавливают верхнюю границу размера байта. Судя по некоторой путанице в этой теме списка рассылки, я ожидаю, что документ API новее, чем обсуждение там.

Ответ №3:

Обычно это два байта на символ, если вы храните Unicode как UTF-8, так что это будет означать максимум 280 байт на твит.

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

1. Символы UTF-8 могут иметь размер более двух октетов. Например, символ торговой марки имеет длину в три октета. Википедия предполагает, что максимально возможный размер составляет шесть (!!!) октетов.

Ответ №4:

Вероятно, 284 байта в памяти (префикс длины 4 байта длина * 2). Внутри БД я не могу сказать, но, вероятно, 280, если БД имеет формат UTF-8, вы могли бы добавить несколько байт служебных данных для метаданных и т.д.

Ответ №5:

Потенциально представляет интерес:
http://mehack.com/map-of-a-twitter-status-object
Анатомия объекта статуса Twitter

Также подробнее о кодировке символов Twitter:
http://dev.twitter.com/pages/counting_characters

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

1. в настоящее время -> developer.twitter.com/en/docs/counting-characters

Ответ №6:

Технически он хранится в формате UTF-8, а на самом деле это слайд-дека от здешнего твиттераhttp://www.slideshare.net/raffikrikorian/twitter-by-the-numbers дает реальную статистику об этом:

140 символов, ~ 200 байт