I would like to use a UUID as a primary key in Cloud Spanner. What is the best way to read and write UUIDs? Is there a UUID type, or client library support?
相关问题
- Why do Dataflow steps not start?
- __call__() missing 1 required positional argument:
- Cannot upload large file to Google Cloud Storage
- How to set query parameters dialogflow php sdk
- Google Data Studio connect to cloud datastore
相关文章
- How do I create a persistent volume claim with Rea
- GKE does not scale to/from 0 when autoscaling enab
- Can't push image to google container registry
- Your application has authenticated using end user
-
Google App Engine Error:
INVALID_ARGUMENT - How to create a namespace if it doesn't exists
- How can I make http call to DialogFlow V2 using si
- Kafka to Google Cloud Platform Dataflow ingestion
The simplest solution is just to store it as a STRING in the standard RFC 4122 format. E.g.:
"d1a0ce61-b9dd-4169-96a8-d0d7789b61d9"
This will take 37 bytes to store (36 bytes plus a length byte). If you really want to save every possible byte, you could store your UUID as two INT64's. However, you would need to write your own libraries for serializing/deserializing the values, and they wouldn't appear very pretty in your SQL queries. In most cases, the extra ~21 bytes of savings per row is probably not worth it.
Note that some UUID generation algorithms generate the UUID sequentially based on a timestamp. If the UUID values generated by a machine are monotonically increasing, then this can lead to hot-spotting in Cloud Spanner (this is analogous to the anti-pattern of using timestamps as the beginning of a primary key), so it is best to avoid these variants (e.g. UUID version 1 is not recommended).