Skip to content

Latest commit

 

History

History
25 lines (13 loc) · 3.06 KB

README.md

File metadata and controls

25 lines (13 loc) · 3.06 KB

ContentDB

contentdb is a document store database library that is similar to CouchDB and MongoDB.

This project follows the general "NoSQL" trend away from table-oriented databases, usually toward document-oriented or otherwise graph-oriented. It will also support outline-oriented databses, like OPML and YAML, which facilitate great data management interfaces in simple text editors and even more powerful UIs, like WorkFlowy and OmniOutliner or open source solutions like Drupal Paragraphs Drag & Drop Mode and Drupal Draggable Views with Sections (draggableviews).

What makes ContentDB significantly different from other databases is that it uses a file to store each "record", called a document, in a specified format. This is similar to RDF-style XML databases.

With this approach, you can easily manage your data storage, retreival, and other metadata storage and retrieval as well. You can easily do version control for history tracking and easy deployment. Relationships are easy to represent using reference fields. See and Pelican and Grav for other similar systems, more so Pelican because of its pelican reference plugin.

To massively improve performance and scalability, Tantivy integration can provide immediate indexing and querying. This is the same as materialized views and mongo collections.

Format

ContentDB combines one structured and one unstructured data format. Headers use SCL, and bodies use Markdown or Lua.

Header field values provide a mechanism to represent attributes of world entities in virtual document texts. Relationship fields work by using the target's model for its field. You can see this implemented in Python in the pelican plugin above and some more background info about using antisymmetric relationships.

Default ID is UUIDv4, but this will soon shift to NanoID. See #17

Short names are a missing feature. #12

Model documents started by following some json document schema or something, forgot which schema

Stores are folders with documents from a single source.