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.
Each UUID inserted in CyCAT has at least an entry in the backend with the following format:
u:<UUID>
->value type
value | type |
---|---|
1 | Publisher |
2 | Project |
3 | Item |
Each UUID inserted might have a corresponding hash table
<type>:<UUID>
-> keys associated with the hash table type
raw
- raw data for the specific itemcycat-oid
- UUID of the publisher or project CyCATlink
- URL reference of the publisher, project or itemtimestamp
- Last update of the UUID metadatashort-name
name
maintainer
- maintainer of the metadata (e.g. cycat)description
_cycat_type
Other field should be prefixed by the origin of the metadata with a format <namespace>:<fieldname>
.
Each type got a sorted set (with a score of one) to easily paginate over the various types
t:<type>
-><UUID>
The parent(s) UUID of the UUID.
parent:<UUID>
-> {UUID
,UUID
}
The child(ren) UUID of the UUID.
child:<UUID>
-> {UUID
,UUID
}
The list of relationships from a specific UUID.
r:<UUID>
-> {UUID
,UUID
}
The relationship data from an UUID tuple.
rd:<source UUID>:<destination UUID>
-> {value
,value
}
A namespace id referenced in an UUID
id:<NAMESPACE>:<NAMESPACE_ID>
-> {UUID
,UUID
}
Known id per namespace
idk:<NAMESPACE>' -> {
NAMESPACE_ID,
NAMESPACE_ID`}
Prefix of API statistic is stats:f:
followed by the function name called.
stats:f:generateuuid
: number of calls to the UUID generator API
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 |