diff options
author | Michael Catanzaro <mcatanzaro@gnome.org> | 2021-08-11 15:14:13 +0000 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@gnome.org> | 2021-08-11 15:14:13 +0000 |
commit | 4fb16d4c8a73efae7b679bfb6e86017022805702 (patch) | |
tree | 24cc35153f1125aafe149897d646aea38533d393 | |
parent | a38285027e12ecca3f2ffc288611ec50fd22ca2b (diff) | |
parent | a79e75db7cd48339ec3c09f37bd0d7453d111a5d (diff) | |
download | gvdb-4fb16d4c8a73efae7b679bfb6e86017022805702.tar.gz |
Merge branch 'readme' into 'master'master
docs: Add README
See merge request GNOME/gvdb!16
-rw-r--r-- | README.md | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..2c53d77 --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +GVDB +==== + +GVDB (GVariant Database) is a simple database file format that stores a +mapping from strings to GVariant values in a way that is extremely +efficient for lookups. + +The code is intended to be pulled into projects as a submodule/subproject, +and it is not shipped as a separately compiled library. It has no API +guarantees. + +A GVDB database table is a single file. It is designed to be memory mapped +by one or more clients, with accesses to the stored data being fast. The +storage format has low size overheads, assuming the GVariant formats for +values do not require much padding or alignment. + +Modifying a GVDB table requires writing out the whole file. This is +relatively slow. `gvdb_table_write_contents()` does this by writing out +the new file and atomically renaming it over the old one. This means +that any clients who have memory mapped the old file will need to reload +their memory mapping. + +This means that if multiple clients are using a GVDB table, an external +process is needed to synchronise writes and to notify clients to reload +the table. `dconf-service` is an example of such a process. |