Как отсрочить апокалипсис 2198 года

Действительно ли мы думаем о будущем?

Проблема с идентификатором

Лидеров бизнеса и инноваций часто спрашивают во время интервью или круглых столов: «Каковы ваши долгосрочные планы?» Реакция обычно предполагает перспективное мышление, скажем, на пять-двадцать лет. Но как насчет 50? А 500?

Один предстоящий недостаток, который захватывает воображение, — это проблема с уникальными идентификационными токенами. Эти токены широко распространены в мире данных и используются для выделения конкретной записи. Например, Facebook связывает номер с каждой публикацией. Вот один: 10211035557083058.

Этот идентификационный номер (ID) должен быть уникальным, чтобы каждый раз, когда вы выполняете какие-либо действия с публикацией, Facebook знал, на какую публикацию вы ссылаетесь. Из-за этой уникальности по мере того, как люди добавляют все больше и больше сообщений в систему Facebook, их число будет расти все больше и больше.

В какой-то момент, можно сказать, токены ID будут содержать больше данных, чем сами посты!

И это не только посты в Facebook. Почти все, что хранится в типичной базе данных, имеет идентификатор. Все типы данных, от каждого продукта и продажи на Amazon до каждой книги и оплаты в местной библиотеке.

Что произойдет, когда через миллион лет наши базы данных будут в основном заполнены идентификационными номерами фактических данных, которые нам нужны? Будет так много постов в Facebook, так много твитов в Twitter или так много библиотечных книг, что, чтобы быть уникальными, идентификаторы должны быть огромными.

В мире, стремящемся к «большему количеству данных», есть ощутимая выгода от шага назад и переосмысления того, как мы храним и извлекаем информацию, что мы храним и как мы влияем на наше будущее. Многие инженеры баз данных уже думают об этом; может ли мышление на сотни лет вперед помочь им?

Проблема растущих идентификаторов — это больше, чем просто хранилище, необходимое для хранения самих идентификаторов. Обмен информацией также затрагивается. Как я могу твитнуть ссылку на мою любимую книгу, если идентификатор книги, важная часть URL-адреса, превышает 280 символов? Что, если я ретвитну твит? Теперь идентификатор сохраняется как минимум дважды. Эта петля обратной связи, когда больше данных вызывает больше данных, должна быть разрешена.

Проблема не ограничивается данными и технологиями

Эта проблема неограниченного роста чисел впервые произвела на меня впечатление на торжественном ужине, который я посетил. После трапезы нам подарили десерт: кусочек торта, увенчанный шоколадной медалью, на которой жирным шрифтом было написано год выпуска: «2019». Мне вдруг пришло в голову, что этот десерт будет намного дороже через несколько сотен тысяч лет. То есть по мере того, как календарный год получает все больше и больше цифр.

Производитель этой засахаренной монеты уже это продумал. Сначала они уменьшат шрифт, чтобы он вмещал дополнительные цифры, но вскоре их клиенты будут жаловаться на удобочитаемость. Затем конфета растет до тех пор, пока она не перестанет быть маленькой конфеткой на кусочке торта; теперь конфета представляет собой большую шляпу, растекающуюся по всем сторонам сравнительно крошечного кусочка торта. Покупатели больше не могут позволить себе и торт, и конфеты, и, в конце концов, сам стол является конфетой.

Все, чтобы соответствовать постоянно увеличивающемуся выпускному году.

Этот сценарий заканчивается, когда вся вселенная заполняется этой конфетой, которая просто хочет показать выпускной год класса. К этому времени каждый ресурс во вселенной требуется для производства последней конфеты. Цифры теперь расположены по обеим сторонам массивного диска: это было решение, принятое в 1 квадриллионе года. Постижение количества цифр, напечатанных на межгалактической монете, так же непостижимо, как и понимание того, что вселенная кончилась. Ученые могли это предвидеть: наш календарный год становится все больше и больше, а пространство во Вселенной остается неизменным.

Хватит о проблеме — пора поговорить о решениях. В частности, что мы можем сделать с проблемой ID?

Заманчивые решения проблемы с ID

Прежде чем перейти к реальным решениям, давайте уберем некоторые из тех ложных решений, о которых вы могли подумать. Цель состоит в том, чтобы не допустить, чтобы идентификационные номера записей стали слишком большими для управления.

Ложное решение 1: разделить данные

Предположим, мы хотим, чтобы наш самый большой идентификатор был меньше 1000, и мы уже отследили 999 библиотечных книг. Одна вещь, которую вы можете сделать, это создать две разные базы данных, одна из которых будет заполнена первыми 999 книгами, а другая пуста, чтобы заполнить следующую серию книг. Каждый раз, когда вы получаете слишком много книг в базе данных, вы можете просто создать новую, и идентификатор будет начинаться с 0! Вау, это было близко.

Это не работает, потому что теперь, если вы хотите идентифицировать книгу, вам нужны две вещи: один идентификатор для книги и один идентификатор для базы данных, в которой хранится книга. Затем вы можете объединить эти два, чтобы сформировать «мастер-идентификатор», и вы вернетесь к тому, с чего начали: действительно длинные идентификаторы.

Ложное решение 2: очистить старые данные

Заманчиво (хотя и необдуманно) предложить очистить посты в Facebook после того, как кто-то умрет и Коко забудет о них. Таким образом, вы можете повторно использовать старые идентификаторы и потенциально достичь некоторого устойчивого состояния при фиксированном количестве сообщений.

После того, как мы с отвращением столкнулись с отсутствием эмпатии в этой идее, остается проблема, что некоторые данные актуальны навсегда. Три примера данных, которые будут актуальны всегда, — это книги, погодные условия и поправки к конституции. Будущее трудно предсказать, и хотя может наступить время, когда о книге думают в последний раз, сказать, что книга ушла из памяти, парадоксально.

Ложное решение 3: создайте новых персонажей

Большинство идентификаторов в настоящее время представляют собой комбинацию цифр и букв. С учетом регистра, что дает вам 26 + 26 + 10 = 62 различных символа. Почему бы не ввести новых персонажей? Новые эмодзи добавляются ежедневно, почему бы не использовать их в наших идентификаторах?

При вводе данных в базу данных эти данные представляют собой не символы, как их может представить себе человек, а единицы и нули (биты). Каждый символ закодирован в двоичном виде и занимает некоторое количество битов. Добавление новых символов означает, что все компьютеры соглашаются, что когда они видят поток, скажем, из семи битов в определенной последовательности, они знают, что он представляет определенный символ. Количество символов для любой длины в битах ограничено, поэтому добавление новых символов здесь не поможет.

Фальшивое решение 4: перестать создавать данные

Удачи с этим.

Как отсрочить информационный апокалипсис

Нельзя отрицать, что в конечном итоге у нас закончится место для хранения информации. На самом деле мы знаем, когда это произойдет: в 2198 году (Камбрия и др. 2). Это год, когда, если бы мы могли использовать каждый атом на Земле для кодирования информации, у нас закончились бы атомы из-за постоянно растущего производства данных.

Однако не стоит волноваться; хранение и сжатие данных часто улучшаются. В частности, когда речь идет о проблеме с идентификаторами, в этом наблюдении есть некоторое утешение: если идентификаторы кодируют больше информации, чем данных, можно повторно использовать данные, не избавляясь от старой информации.

Напомним, проблема не в том, что у нас слишком много данных — у нас слишком много метаданных. Можем ли мы разработать систему, в которой для любого нового фрагмента данных идентификатор не будет больше, чем сами данные? Конечно, можем, и вот инструкции (вы слушаете, инженеры баз данных?):

  1. Вычислить следующий идентификатор для фрагмента данных.
  2. Если идентификатор меньше, чем часть данных, отлично! Используй это.
  3. Если нет, удалите этот идентификатор и используйте сами данные в качестве идентификатора.

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

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

Я представляю эту идею вне рубрики «Фальшивые решения» не потому, что это реальное решение, а потому, что оно мне нравится больше, чем другие фальшивые решения. Надеюсь, это встряхнет мозги переутомленных инженеров баз данных, и они придумают решение раньше, чем

Цитаты

Камбрия и др.: Хранилища не вечны, опубликованная в 2017 году в журнале Cognitive Computation https://www.osti.gov/pages/biblio/1420053-storages-forever.

Вот и все. Все остальное ошибочно.

Фотографии мои.