We currently have uuid and revision stored as strings, which uses a lot more space than we'd need.
As a first optimization we could use the binary representation which would require 16bytes for the uuid and 8 bytes for the 64bit revision.
Secondly we could use a separate table for the uid lookup, and only use the revision in the primary storage, which would allow us to use integer keys.