Skip to content

Commit

Permalink
Version 0.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
huahaiy committed Feb 28, 2021
1 parent 49caff2 commit 5ee07d7
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 20 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Change Log
All notable changes to this project will be documented in this file. This change log follows the conventions of [keepachangelog.com](http://keepachangelog.com/).

## WIP
## 0.4.0
### Changed
- [Breaking] Removed AEV index, as it is not used in query. This reduces storage
and improves write speed.
Expand Down
48 changes: 30 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ storage and index structure of Datalevin is already compatible with all of them.

## :truck: Installation

### Clojure library

Datalevin is a Clojure library, simply add it to your project as a dependency
and start using it!

Expand All @@ -80,19 +82,31 @@ If you use [Clojure CLI](https://clojure.org/guides/deps_and_cli) and

```Clojure
{:deps
{datalevin/datalevin {:mvn/version "0.3.17"}}}
{datalevin/datalevin {:mvn/version "0.4.0"}}}
```

If you use [Leiningen](https://leiningen.org/) build tool, add this to the
`:dependencies` section of your `project.clj` file:

```Clojure
[datalevin "0.3.17"]
[datalevin "0.4.0"]
```

## :tada: Usage
### Native image and command line tool

Datalevin supports compilation into a GraalVM native image. Native Datalevin should have
better performance, for the native image version does not incur JNI
overhead and uses a comparator written in C, see [blog
post](https://yyhh.org/blog/2021/02/writing-c-code-in-javaclojure-graalvm-specific-programming/).

The release contains a command line tool called `dtlv` that is built with
Datalevin native image. It can be used to work with Datalevin database files in shell
scripting, for the purposes of database backup, data import, export,
query/transaction execution, database compaction, and so on.

## :tada: Library Usage

Use as a Datalog store:
### Use as a Datalog store

```clojure
(require '[datalevin.core :as d])
Expand Down Expand Up @@ -143,7 +157,7 @@ Use as a Datalog store:
(d/close conn)
```

Use as a key value store:
### Use as a key value store
```clojure
(require '[datalevin.lmdb :as l])
(import '[java.util Date])
Expand Down Expand Up @@ -191,14 +205,15 @@ Use as a key value store:
;; Close key value db
(l/close-kv db)
```
### API doc

Please refer to the [API
documentation](https://juji-io.github.io/datalevin/index.html) for more details.

## :rocket: Status

Both Datascript and LMDB are mature and stable libraries. Building on top of
them, Datalevin is extensively tested with property-based testing, and is used
them, Datalevin is extensively tested with property-based testing. It is also used
in production at [Juji](https://juji.io).

Running the [benchmark suite adopted from
Expand Down Expand Up @@ -235,16 +250,15 @@ Large scale projects can be supported when distributed mode is implemented.
These are the tentative goals that we try to reach as soon as we can. We may
adjust the priorities based on feedback.

* 0.4.0 Native command line tool and native shared library, so Datalevin can be used in scripting and in
languages other than Clojure.
* 0.4.0 Native image and native command line tool. [Done 2021/02/27]
* 0.5.0 A new Datalog query engine with improved performance.
* 0.6.0 Datalog query parity with Datascript: composite tuples and persisted transaction functions
* 0.7.0 Fully automatic schema migration on write
* 0.8.0 As a product rule engine: implementing Rete/UL algorithm
* 0.6.0 Datalog query parity with Datascript: composite tuples and persisted transaction functions.
* 0.7.0 Fully automatic schema migration on write.
* 0.8.0 As a product rule engine: implementing Rete/UL algorithm.
* 0.9.0 As a search engine: fuzzy fulltext search across multiple attributes.
* 0.10.0 As a graph database: implementing [loom](https://github.com/aysylu/loom) graph protocols
* 0.11.0 As a document database: auto indexing of document fields
* 1.0.0 Distributed mode with raft based replication
* 0.10.0 As a graph database: implementing [loom](https://github.com/aysylu/loom) graph protocols.
* 0.11.0 As a document database: auto indexing of document fields.
* 1.0.0 Distributed mode with raft based replication.

We appreciate and welcome your contribution or suggestion. Please file issues or pull requests.

Expand Down Expand Up @@ -279,9 +293,7 @@ than just the difference in data durability:
(i.e. do not expect `:b` to come after `:a`). This is the same as Datomic®.

* Has no features that are applicable only for in-memory DBs, such as DB as an
immutable data structure, DB serialization, DB pretty print, etc. For now,
[LMDB tools](http://www.lmdb.tech/doc/tools.html) can be used to work with the
database files.
immutable data structure, DB pretty print, etc.

This project would not have started without the existence of Datascript, we will
continue submitting pull requests to Datascript with our improvements where they
Expand Down Expand Up @@ -330,7 +342,7 @@ If you are interested in using the dialect of Datalog pioneered by Datomic®, he

* If you need a simple and fast durable store with a battle tested backend, give [Datalevin](https://github.com/juji-io/datalevin) a try.

Version: 0.3.17
Version: 0.4.0

## License

Expand Down
2 changes: 1 addition & 1 deletion project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(def version "0.3.17")
(def version "0.4.0")

(defproject datalevin version
:description "A simple, fast and durable Datalog database"
Expand Down

0 comments on commit 5ee07d7

Please sign in to comment.