UUID

UUID is used to generate the global unique identifiers.

When the number of vertices reaches billions, using Hash Function to generate vids has a certain conflict probability. Therefore, Nebula Graph provides UUID Function to avoid vid conflicts in a large number of vertices. UUID Function is composed of the Murmur hash function and the current timestamp (in seconds).

Low Performance and compatibility issues for UUID

Values generated with the UUID are stored in the Nebula Graph Storage service in key-value mode. When called, it checks whether this key exists or conflicts. So the performance may be lower than hash. In addition, UUID may not be available in future versions.

Insert with UUID:

-- Insert a vertex with the UUID function.
nebula> INSERT VERTEX player (name, age) VALUES uuid("n0"):("n0", 21);
-- Insert an edge with the UUID function.
nebula> INSERT EDGE follow(degree) VALUES uuid("n0") -> uuid("n1"): (90);

Fetch with UUID:

nebula> FETCH PROP ON player uuid("n0") YIELD player.name, player.age;
-- The following result is returned:
===================================================
| VertexID             | player.name | player.age |
===================================================
| -5057115778034027261 | n0          | 21         |
---------------------------------------------------
nebula> FETCH PROP ON follow uuid("n0") -> uuid("n1");
-- The following result is returned:
=============================================================================
| follow._src          | follow._dst         | follow._rank | follow.degree |
=============================================================================
| -5057115778034027261 | 4039977434270020867 | 0            | 90            |
-----------------------------------------------------------------------------

Go with UUID:

nebula> GO FROM uuid("n0") OVER follow;
--The following result is returned:
=======================
| follow._dst         |
=======================
| 4039977434270020867 |
-----------------------