Хранение номера версии в базах данных (MongoDB) - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу сохранить информацию о версии в базе данных (в частности, MongoDB) таким образом, чтобы она быстро сортировалась и запрашивалась для определенных диапазонов.

Информация о версии будет выглядеть следующим образом:

0.1.0.0
0.7.56.101
0.99.40.154
10.2.153.200

Я нашел эту статью здесь о предмете.Сводные параметры:

  1. Использовать varchar

  2. Использовать три числовых поля: Major, Minor, Patch

  3. Используйте оба.

Я думал о четвертом варианте, где информация о версии может быть преобразована в 32-битное int, где каждый заполнитель версии занимает8 бит.

например:

0.7.56.101 -> 00000000 00000111 00111000 01100101 -> 473189

Таким образом, значение 473189 будет сохранено.Я знаю, что это ограничивает расширение версий из-за того, что максимальная версия для каждого октета равна 255 (255.255.255.255), но я бы сказал, что этого более чем достаточно для моей жизни.

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

Это хороший способ справиться с этим или есть лучшие способы сделать это?

1 Ответ

0 голосов
/ 19 декабря 2018

Я бы порекомендовал хранить каждую часть отдельно, чтобы упростить доступ к каждой части номера версии, но затем объединить их слева с нулями в канонический формат для сортировки и сравнения.Таким образом, ваш пример версии с каждым сегментом слева, дополненным тремя символами, станет:

000.001.000.000
000.007.056.101
000.099.040.154
010.002.153.200

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...