Skip to main content

ffdb

Project description

ffdb.py - Flat-File DB: nosql single file database and document storage

The module ffdb and the associated set of utility scripts (indexer, extractor, filestorer, remover and merger) allow the creation, maintenance and usage of a database and document storage which employs a single file acting as a container for all the data.

This file can be distributed in several copies, made locally available or placed online to be accessed remotely (e.g. over ftp or www).

The resulting database is hence accessible everywhere, without the need for any complex installation and in particular without requiring any service to be running continuously.

  • Simple 1-2-3 procedure:
  1. Index your flat-file and/or choose documents to store
  2. Place the resulting file wherever you want (locally or online, e.g. ftp or www)
  3. Retrieve the entries or the documents from any device and location

FFDB can index entries according to any pattern, creating index of identifiers unique to each entry or shared across many. For a biological database this could mean for example to allow retrieval of all entries belonging to a certain species.

When requesting entries, the user can specify whether retrieving all the entries corresponding to the given identifier, or only the first or only the last one. This allows the possibility of storing a version history of the entries, continuously appending new entry versions to the file.

When indexing entries of a flat-file or storing documents inside the database, the user can optionally specify to encrypt (AES) or compress (ZLIB) the entries/files.

Encrypted entries share a single master password but each has a unique IV (Initialization vector). No plaintext information is sent or received, thus allowing secure access to encrypted entries of the database over insecure channels.

With an external utility (gztool), the container file can even be compressed as a whole, while still allowing retrieval of single entries. This can be useful when said file needs to also be distributed and employed in its entirety, without limiting its use only via ffdb.

If the container file is compressed with bgzip, then no external utility is needed.

Documentation

Download and installation

ffdb is pure python code. It has no platform-specific dependencies and should thus work on all platforms. It requires the packages requests pycryptodomex and sortedcontainers. The latest version of ffdb can be installed by typing either:

pip3 install -U ffdb

(from Python Package Index)

or:

pip3 install git+git://github.com/g-insana/ffdb.py.git

(from GitHub).

The utility scripts should get installed for you by pip (if installed as --user you may need to add e.g. ~/.local/bin/ to your $PATH). Alternatively, you can directly download those you need:

curl -LO https://github.com/g-insana/ffdb.py/raw/master/scripts/indexer.py
curl -LO https://github.com/g-insana/ffdb.py/raw/master/scripts/extractor.py
curl -LO https://github.com/g-insana/ffdb.py/raw/master/scripts/remover.py
curl -LO https://github.com/g-insana/ffdb.py/raw/master/scripts/merger.py

Quickstart: some examples

 #index a flat-file:

$ indexer.py -i '^name: (.+)$' 'email: (.+)$' -f addressbook >addressbook.idx

$ indexer.py -i '^AC   (.+?);' -f uniprot.dat -e '^//$' >uniprot.pac

 #store all the files contained in a directory:

$ filestorer.py -f myphotos.db -d iceland_photos/

 #add some more files

$ filestorer.py -f myphotos.db -s sunset.jpg icecream.jpg

 #extract a series of entries from the db

$ extractor.py -f uniprot.dat -i uniprot.pac -l sars_proteins

 #extract an entry from remote location

$ extractor.py -f http://remote.host/addressbook -i addressbook.idx -s john@abc.de

 #extract a file from the db

$ extractor.py -f myphotos.db -s sunset.jpg >sunset.jpg

 #merge two indexed flat-files

$ merger.py -f mydb -i mydb.idx -e newentries -n newentries.idx -d #(mydb will incorporate newentries)

 #remove a series of entries from the db

$ remover.py -f addressbook -i addressbook.idx -l disagreed_with_me.list

Copyright

ffdb is licensed under the GNU Affero General Public License.

(c) Copyright Giuseppe Insana, 2020-

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ffdb-2.5.5.tar.gz (59.3 kB view details)

Uploaded Source

Built Distribution

ffdb-2.5.5-py3-none-any.whl (58.6 kB view details)

Uploaded Python 3

File details

Details for the file ffdb-2.5.5.tar.gz.

File metadata

  • Download URL: ffdb-2.5.5.tar.gz
  • Upload date:
  • Size: 59.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for ffdb-2.5.5.tar.gz
Algorithm Hash digest
SHA256 e749d975ab1dd5d0f0a0f9064ee4dcaa324bde0ab6b9d3de8bd67d1491f77f90
MD5 17f06ab5530521d4789dbeda4b2451ea
BLAKE2b-256 e43c4f087c94211ea17325f8064ae95ec2964615c6499a69c801c014ff242533

See more details on using hashes here.

File details

Details for the file ffdb-2.5.5-py3-none-any.whl.

File metadata

  • Download URL: ffdb-2.5.5-py3-none-any.whl
  • Upload date:
  • Size: 58.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5

File hashes

Hashes for ffdb-2.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f7accad7d23a1e646334a44203e3439c3cac56edcf280554d451c0d177ac85d6
MD5 5eb435b99e32a5c7a016854d08590260
BLAKE2b-256 7bcd40ce4576b4823249ec6d8f80f8871c1411f83477010b0c16ee3a796056de

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page