Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----
- presentation_topic: GitDB
- presentation_title: GitDB - plumbing for databases
- presentation_place: GitTogether @ GooglePlex, Mountain View
- presentation_date: October 29th, 2008
- ----
- == Git as a database back-end
- * motivation
- * design
- * discussion
- ----
- == GitDB design elements
- * row format
- * information_schema (DDL) schema
- * table to tree layout
- * ACID protocol
- * git plumbing commands to do relational things
- ----
- Row format
- * completely arbitrary, really. could even be mixed.
- * suggested formats:
- ** Pg binary row format (minus unnecessary headers)
- ** TSV + text encoded values
- ----
- information_schema
- * required for DDL transactions
- * allows types to be omitted from row format
- * suggested formats:
- ** Pg pg_class tables
- ** SQL standard information_schema
- ** MySQL - not as complete/flexible as Pg
- * should support basic contstraints (FK, unique, expression)
- ----
- table to tree layout
- * top level as relation name
- * next level is the text form of primary key
- * Index-Organised-Table is therefore the default
- ----
- table to tree layout 2
- * object as a session of writing row data, for fast bulk insert/full scan
- * implies object names become range of rows within
- * generally tables will use (specially selected) UUID format so that they can write many rows without worrying about key overlap
- * some tree entries will denote a deletion or replacement of a row
- ----
- table to tree layout 3
- * may be split into sub-trees for b-tree indexing large tables
- * Indexes are discrete entities and contain the primary key of the referent row
- ----
- ACID protocol
- * log the key range of locks acquired for the transaction in the commit message
- * writers can then check that objects have not changed, using index ID matching, or (worst case) checking rows didn't change
- * highest SQL isolation level supported already
- * could support full predicate matching for specialist applications by acquiring locks on temporary views
- ----
- Git commands
- * basic operations:
- ** scanner/random seeker - git-db-select
- ** inserter/updater - git-db-upsert
- ** deleter - git-db-delete
- * tx logic:
- ** git-db-txn ( begin | commit )
- ** active transaction makes above commands spool activity
- ** git-db-txn merge commit
- * DDL operations:
- ** create relation - git-db-ddl-create
- ** alter relation - git-db-ddl-alter
- * complex query machinery (later):
- ** join select streams - git-db-join
- ** evaluate expressions on select streams - git-db-expr
- ** subselect - git-db-loop
- ** SQL parser/query planner - git-db-sql
- ----
- Potential uses
- * solid foundation for distributed applications
- * auditing/multi-master applications
- * might even be faster/smaller DBs than existing databases
- * give Progres experts a new feeling of home
Add Comment
Please, Sign In to add comment