update
This commit is contained in:
parent
9dffd440cc
commit
5cba40e7cc
1 changed files with 21 additions and 0 deletions
|
@ -32,6 +32,27 @@ Store in the database the Ref of the branch that was used to construct it.
|
||||||
4. Store incremental fsck info in db.
|
4. Store incremental fsck info in db.
|
||||||
5. Replace .map files with 3. for direct mode.
|
5. Replace .map files with 3. for direct mode.
|
||||||
|
|
||||||
|
## sqlite or not?
|
||||||
|
|
||||||
|
sqllite seems like the most likely thing to work. But it does involve ugh,
|
||||||
|
SQL. And even if that's hidden by a layer like persistent, it's still going
|
||||||
|
to involve some technical debt (eg, database migrations).
|
||||||
|
|
||||||
|
It would be great if there were some haskell thing like acid-state
|
||||||
|
that I could use instead. But, acid-sate needs to load the whole
|
||||||
|
DB into memory. In the comments of
|
||||||
|
[[bugs/incremental_fsck_should_not_use_sticky_bit]] I examined several
|
||||||
|
other haskell database-like things, and found them all wanting, except for
|
||||||
|
possibly TCache.
|
||||||
|
|
||||||
|
TODO: This seems promising; investigate it:
|
||||||
|
<https://awelonblue.wordpress.com/2014/12/19/vcache-an-acid-state-killer/>
|
||||||
|
It uses LMDB, which is a C library, and its PVar is a variable named by a
|
||||||
|
bytestring, so it's essentially a key/value store where the values can be
|
||||||
|
arbitrary Haskell data types. Since git-annex already has Keys, and most
|
||||||
|
of the need for the database is to look up some cached value for a Key,
|
||||||
|
this seems like a pretty good fit!
|
||||||
|
|
||||||
## case study: persistent with sqllite
|
## case study: persistent with sqllite
|
||||||
|
|
||||||
Here's a non-normalized database schema in persistent's syntax.
|
Here's a non-normalized database schema in persistent's syntax.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue