2017-02-16 20 views
3

Я хотел бы использовать UUID в качестве первичного ключа в Cloud Spanner. Каков наилучший способ читать и писать UUID? Существует ли тип UUID или поддержка клиентской библиотеки?Хранение UUID в Cloud Spanner

ответ

3

Самое простое решение - просто сохранить его как STRING в стандартном формате RFC 4122. Например .:

"d1a0ce61-b9dd-4169-96a8-d0d7789b61d9"

Это займет 37 байт для хранения (36 байтов плюс длина байта). Если вы действительно хотите сохранить все возможные байты, вы можете сохранить свой UUID как два INT64. Однако вам нужно будет написать свои собственные библиотеки для сериализации/десериализации значений, и они не будут выглядеть очень красиво в ваших SQL-запросах. В большинстве случаев дополнительные ~ 21 байт экономии за строку, вероятно, не стоят того.

Обратите внимание, что некоторые алгоритмы генерации UUID генерируют UUID последовательно на основе временной метки. Если значения UUID, генерируемые машиной, монотонно увеличиваются, это может привести к горячему обнаружению в Cloud Spanner (это аналогично анти-шаблону использования временных меток в качестве начала первичного ключа), поэтому лучше избегать эти варианты (например, UUID версии 1 не рекомендуется).

Смежные вопросы