ПОЧЕМУ
- Мне бы хотелось иметь уникальные идентификаторы для всех объектов в моей системе.
- Возможность идентифицировать владельца по "типу" формы будет отличной, даже лучше, если мне не придется нажимать на БД.
1012 * GUID *
ВНИЗ:
- Не могу сказать тип без запроса дБ.
СКРЫВАЯ ТИП В ТОП-Х БИТОВ
Давайте признаем, что 64 бита никогда не закончатся. Идея состоит в том, чтобы использовать, возможно, верхние, скажем, биты X для кодирования «типа» объекта. Это будет означать, что идентификаторы будут исключительно большими.
ПРИМЕЧАНИЯ
- Верхние биты маскируются и очищаются для получения истинного идентификатора для дБ.
ИБП
- Может легко определить тип идентификатора, проверяя правильные биты.
ТИП КОДИРОВАНИЯ В НИЖЕ Х БИТОВ
Вместо того, чтобы кодировать в верхних битах, сдвигать истинный идентификатор и кодировать в младших битах. Если я хочу зарезервировать 5 битов для «типов», тогда истинный идентификатор 3 + тип идентификатора X окажется 5 + 3 << X. </p>
ПРИМЕЧАНИЯ
- Точно так же, как и другой метод кодирования, описанный выше, биты типа маскируются при работе с базами данных.
DOWNS
- Если мне понадобится больше, чем X бит для типов на более позднем этапе, тогда мне нужно будет закодировать оставшиеся биты в верхнем конце 64-битного значения.
UPS
- Нет необходимости запрашивать базу данных, чтобы определить «тип» сущности по id.
МНЕНИЯ
Какой вариант лучше? Мне лично нравится последний вариант, выбор хорошего размера для X оставляет достаточно места для расширения без чрезмерно больших идентификаторов.