TerminusDB 11.0.0: Typed Storage Backend and Migration

Open inAnthropic

TerminusDB 11.0.0 replaces the storage backend with typed XSD storage and layer archives. Released on 30 January 2023, it changes the on-disk format: your storage directory must be upgraded before the server will start.

Typed storage backend

What it does

Two changes at the storage layer:

  • Typed storage for a wide variety of XSD types, reducing storage overhead and improving search performance.
  • A layer archive format that reduces storage use and latency and simplifies moving stores between machines.

Why it matters

The performance of the engine improved dramatically and the storage size went down to a smaller fraction of the previous version. Measurements at the time indicated an average of 13 (!!) bytes per triple thanks to the succinct data structures.

GraphQL and frames

  • _type on GraphQL objects returns the exact type rather than the subsumed type.
  • @unfoldable added to document frames — mark a class so its documents are unfolded when referenced.
  • @metadata added to frames.

Fixes

  • Fixed inverse fields in GraphQL; removed extraneous system objects from the GraphQL schema
  • Fixed a GraphQL naming bug that crashed schema generation; improved schema completeness
  • Added x-method-override to CORS headers

Required migration

Backwards-incompatible changes:

  • The storage format changed. After installing 11.0.0, run the terminusdb-10-to-11 conversion tool (also bundled with terminusdb-bootstrap) or the server will not start.
  • xsd:integer, xsd:decimal and their unbounded sub-types are now returned as strings through the document interface — arbitrary-precision numbers do not survive most JSON libraries. You can still submit numbers; they come back as strings.

Upgrade

Example: Bash
docker pull terminusdb/terminusdb-server:v11.0.0

Then run the storage upgrade tool above before starting the server. Docker install guide · Full changelog on GitHub


Next: TerminusDB 11.0.1: Local Clone and Pre-Commit Hooks · TerminusDB 11.0 changelog · Release index

Was this helpful?