cycat-service/backend/data-structure.md

2.1 KiB

CyCAT data structure

The data structure is based on a Redis-compatible data store. kvrocks is the Redis-compatible data store used for CyCAT but any compatible Redis data store can be used.

u:

Each UUID inserted in CyCAT has at least an entry in the backend with the following format:

  • u:<UUID> -> value type

Value type available

value type
1 Publisher
2 Project
3 Item

: (hash table)

Each UUID inserted might have a corresponding hash table

  • <type>:<UUID> -> keys associated with the hash table type

Reserved keys

  • raw - raw data for the specific item

t: (sorted set)

Each type got a sorted set (with a score of one) to easily paginate over the various types

  • t:<type> -> <UUID>

parent: (set)

The parent(s) UUID of the UUID.

  • parent:<UUID> -> {UUID, UUID}

child: (set)

The child(ren) UUID of the UUID.

  • child:<UUID> -> {UUID, UUID}

r: (set)

The list of relationships from a specific UUID.

  • r:<UUID> -> {UUID, UUID}

rd:: (set)

The relationship data from an UUID tuple.

  • rd:<source UUID>:<destination UUID> -> {value, value}

id::<NAMESPACE_ID> (set)

A namespace id referenced in an UUID

  • id:<NAMESPACE>:<NAMESPACE_ID> -> {UUID, UUID}

idk: (set)

Known id per namespace

  • idk:<NAMESPACE>' -> {NAMESPACE_ID, NAMESPACE_ID`}

Statistics

Automatic API statistics

Prefix of API statistic is stats:f: followed by the function name called.

  • stats:f:generateuuid : number of calls to the UUID generator API

Fixed UUIDs for UUIDv5 generation

value description
690b3b43-d689-481c-aa61-5351963a36f2 Used to generate the UUID of a GitHub url - concatenation key is publisher:project
39d6e10c-dac7-40e2-8e99-1ab1cefea6f4 Used to generate CyCAT OID for publisher and project