From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Amirouche Newsgroups: gmane.lisp.guile.user Subject: [ANN] guile-wiredtiger 0.6 Date: Sat, 27 May 2017 11:12:34 +0200 Message-ID: <6cee0f96-a0ed-5129-7a70-374162221c12@hypermove.net> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: blaine.gmane.org 1495876334 27793 195.159.176.226 (27 May 2017 09:12:14 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 27 May 2017 09:12:14 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 To: "guile-user@gnu.org" Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat May 27 11:12:10 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dEXlZ-00076G-Ht for guile-user@m.gmane.org; Sat, 27 May 2017 11:12:09 +0200 Original-Received: from localhost ([::1]:40001 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dEXlf-00068l-1y for guile-user@m.gmane.org; Sat, 27 May 2017 05:12:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dEXlG-000682-Dt for guile-user@gnu.org; Sat, 27 May 2017 05:11:52 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dEXlD-0007bC-7P for guile-user@gnu.org; Sat, 27 May 2017 05:11:50 -0400 Original-Received: from relay3-d.mail.gandi.net ([217.70.183.195]:41453) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dEXlD-0007aV-1W for guile-user@gnu.org; Sat, 27 May 2017 05:11:47 -0400 Original-Received: from mfilter12-d.gandi.net (mfilter12-d.gandi.net [217.70.178.129]) by relay3-d.mail.gandi.net (Postfix) with ESMTP id 40412A80C2 for ; Sat, 27 May 2017 11:11:44 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter12-d.gandi.net Original-Received: from relay3-d.mail.gandi.net ([217.70.183.195]) by mfilter12-d.gandi.net (mfilter12-d.gandi.net [10.0.15.180]) (amavisd-new, port 10024) with ESMTP id DyJhWxFinzQc for ; Sat, 27 May 2017 11:11:42 +0200 (CEST) X-Originating-IP: 37.169.247.10 Original-Received: from [192.168.42.113] (unknown [37.169.247.10]) (Authenticated sender: amirouche@hypermove.net) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id 5F450A80CB for ; Sat, 27 May 2017 11:11:42 +0200 (CEST) Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.70.183.195 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:13748 Archived-At: Héllo! I am pleasedto announce the immediate availability of guile-wiredtiger. A database system for guile. wiredtiger in a few bullet points: - ACID - NoSQL (in the sens it has no (sugar) SQL DSL) - networkless - automatic index - multithread support - ordered key/value store - it requires no setup (like sqlite) - it does prefix compression (nice for timeseries) - it does compression - it does encryption It's similar to leveldb, rocksdb and bsddb. The creator of wiredtiger did previously code bsddb now part of oracle. It only works on 64bit systems. At the very core, it's a configurable ordered key/value store, column aware, with global transactions. It's not cache database like REDIS. It's more powerful than RDBMS model and can implement it (demonstrated in [1]). [1] http://hyperdev.fr/notes/somewhat-relational-database-library-using-wiredtiger.html The low level API allows to create tables (!) with two kind of columns: key columns and value columns (somewhat like cassandra). Then you can lookup entries in the database using the key with search procedures. There is two kinds of search procedure. One does exact match of the whole key columns, the other does an approximate match, where you lookup for a key prefix (This is actuallly very useful). Once you have a pointer to an entry in the table you can navigate it quickly using next and previous procedures (remember the table is ordered). There is higher level abstractions like a graphdb with gremlin-like querying, a feature space with microkanren querying and an inverted index for looking up words in documents. You can get it using the following command: git clone https://framagit.org/a-guile-mind/guile-wiredtiger.git I created several toy projects using this library, actually all my work is based on this library: - https://framagit.org/a-guile-mind/culturia - https://framagit.org/a-guile-mind/hyper - https://framagit.org/a-guile-mind/nanoblog/ - https://framagit.org/a-guile-mind/azul And various posts: - http://hyperdev.fr/notes/getting-started-with-guile-wiredtiger.html - http://hyperdev.fr/notes/getting-started-with-guile-uav-database.html - http://hyperdev.fr/notes/somewhat-relational-database-library-using-wiredtiger.html - http://hyperdev.fr/notes/a-graph-based-movie-recommender-engine-using-guile-scheme.html The project is far from perfect as it's still not packaged and the document is not up to the Guile standard but it's usable. Happy hacking!