Guest User

Untitled

a guest
Feb 21st, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. ----
  2. presentation_topic: GitDB
  3. presentation_title: GitDB - plumbing for databases
  4. presentation_place: GitTogether @ GooglePlex, Mountain View
  5. presentation_date: October 29th, 2008
  6.  
  7. ----
  8. == Git as a database back-end
  9.  
  10. * motivation
  11. * design
  12. * discussion
  13.  
  14. ----
  15. == GitDB design elements
  16.  
  17. * row format
  18. * information_schema (DDL) schema
  19. * table to tree layout
  20. * ACID protocol
  21. * git plumbing commands to do relational things
  22.  
  23. ----
  24. Row format
  25.  
  26. * completely arbitrary, really. could even be mixed.
  27. * suggested formats:
  28. ** Pg binary row format (minus unnecessary headers)
  29. ** TSV + text encoded values
  30.  
  31. ----
  32. information_schema
  33.  
  34. * required for DDL transactions
  35. * allows types to be omitted from row format
  36. * suggested formats:
  37. ** Pg pg_class tables
  38. ** SQL standard information_schema
  39. ** MySQL - not as complete/flexible as Pg
  40. * should support basic contstraints (FK, unique, expression)
  41.  
  42. ----
  43. table to tree layout
  44.  
  45. * top level as relation name
  46. * next level is the text form of primary key
  47. * Index-Organised-Table is therefore the default
  48.  
  49. ----
  50. table to tree layout 2
  51.  
  52. * object as a session of writing row data, for fast bulk insert/full scan
  53. * implies object names become range of rows within
  54. * generally tables will use (specially selected) UUID format so that they can write many rows without worrying about key overlap
  55. * some tree entries will denote a deletion or replacement of a row
  56.  
  57. ----
  58. table to tree layout 3
  59.  
  60. * may be split into sub-trees for b-tree indexing large tables
  61. * Indexes are discrete entities and contain the primary key of the referent row
  62.  
  63. ----
  64. ACID protocol
  65.  
  66. * log the key range of locks acquired for the transaction in the commit message
  67. * writers can then check that objects have not changed, using index ID matching, or (worst case) checking rows didn't change
  68. * highest SQL isolation level supported already
  69. * could support full predicate matching for specialist applications by acquiring locks on temporary views
  70.  
  71. ----
  72. Git commands
  73.  
  74. * basic operations:
  75. ** scanner/random seeker - git-db-select
  76. ** inserter/updater - git-db-upsert
  77. ** deleter - git-db-delete
  78. * tx logic:
  79. ** git-db-txn ( begin | commit )
  80. ** active transaction makes above commands spool activity
  81. ** git-db-txn merge commit
  82. * DDL operations:
  83. ** create relation - git-db-ddl-create
  84. ** alter relation - git-db-ddl-alter
  85. * complex query machinery (later):
  86. ** join select streams - git-db-join
  87. ** evaluate expressions on select streams - git-db-expr
  88. ** subselect - git-db-loop
  89. ** SQL parser/query planner - git-db-sql
  90.  
  91. ----
  92. Potential uses
  93.  
  94. * solid foundation for distributed applications
  95. * auditing/multi-master applications
  96. * might even be faster/smaller DBs than existing databases
  97. * give Progres experts a new feeling of home
Add Comment
Please, Sign In to add comment