Stop using shelve
authorJack Miller <jack@codezen.org>
Tue, 16 Jun 2015 20:53:25 +0000 (15:53 -0500)
committerJack Miller <jack@codezen.org>
Wed, 17 Jun 2015 21:39:23 +0000 (16:39 -0500)
commit7e1b2f94226d49cab5f241218d269a50f5c27c7e
tree2405699b6c2d293421914f13311ad67f501c6bfa
parent9873ad786749ba70ee42093a287e275aa30aeda5
Stop using shelve

NOTE: This will automatically migrate old shelves.

- Copying shelve dbs is a fucking pain and has caused breakage when
  moving from one distro / OS to another when the available lightweight
DBs change.

- We use basically no database features, except the "cache" which is
  really just the DB holding the entire database in memory which we can
also do with greater control (there has been 0 change in memory usage
with this patch).

- We have to workaround the database constantly expanding in size with
  some databases (GDBM requires reorganize())

- Shelves don't (as far as I can see) play well with transparent
  compression and it doesn't look like it does any compression itself,
so by just gzipping raw JSON, we can shrink the feeds file by 80%.

- Internally, shelves use pickle, which is a Python only serialization.
  This isn't important at the moment, but gzipped JSON is platform
agnostic.

- Replace my feed dump script with zcat =P.
canto_next/canto_backend.py
canto_next/storage.py