summaryrefslogtreecommitdiff
path: root/README
blob: 3b5bea696159ad293c7ddb8baa4784787125e83c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
libosl, the object storage layer, is a library for storing small to
medium-sized data in relational tables. It is easy to use, lightweight,
fast and portable. libosl is suitable for applications that need
only a small fraction of the features a full database management
system provides.

Libosl is simple:

- For libosl, all data stored in the osl tables are blobs,
libosl will never try to interpret the table contents.

- There is no fancy query language but only a relatively
simple C-API.

- There's no support for network-access and libosl only uses a very
rudimentary table locking mechanism.

- There are no dependencies on external libraries. An augmented
version of the red-black tree implementation of the linux
kernel is included in the libosl package.

Libosl is fast:

- It uses sha1 hashes for content-based addressing.

- Red-black trees are used to make lookups fast.

Libosl is portable:

- It is known to compile and run on Linux, FreeBSD, NetBSD. It might
work on other Unix systems as well.

- Content and metadata is stored in an endian-agnostic way.

Libosl is open source:

- Licensed under the [GNU General Public License, Version
2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)

Apart from the library itself, the package also contains simple
examples and an fsck program, oslfsck, which can be used to recover
from corrupted tables due to system crashes or bugs in the application
or the library.

Resources:

- Git clone URL: https://git.tuebingen.mpg.de/osl.git
- [Gitweb](https://git.tuebingen.mpg.de/osl.git)
- [Author Home Page](https://people.tuebingen.mpg.de/maan)
- [Project Page](https://people.tuebingen.mpg.de/maan/osl)
- Email: [Andre Noll](mailto:maan@tuebingen.mpg.de)

Comments and bug reports are welcome. Please provide enough info
such as the version of osl you are using and relevant parts of
the logs.