From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Amirouche Boubekki Newsgroups: gmane.lisp.guile.user Subject: Re: [ANN] gzochi project development release 0.10 Date: Sat, 13 Aug 2016 21:33:43 +0200 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1471116863 2163 195.159.176.226 (13 Aug 2016 19:34:23 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 13 Aug 2016 19:34:23 +0000 (UTC) User-Agent: Roundcube Webmail/1.1.2 Cc: Guile Users , guile-user To: Julian Graham Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sat Aug 13 21:34:18 2016 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 1bYehG-0000M6-4h for guile-user@m.gmane.org; Sat, 13 Aug 2016 21:34:18 +0200 Original-Received: from localhost ([::1]:58416 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYehD-0006Ca-6j for guile-user@m.gmane.org; Sat, 13 Aug 2016 15:34:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56605) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYegr-0006CS-J7 for guile-user@gnu.org; Sat, 13 Aug 2016 15:33:54 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bYegp-00005g-HC for guile-user@gnu.org; Sat, 13 Aug 2016 15:33:52 -0400 Original-Received: from relay5-d.mail.gandi.net ([2001:4b98:c:538::197]:59792) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYegj-000053-R4; Sat, 13 Aug 2016 15:33:45 -0400 Original-Received: from mfilter21-d.gandi.net (mfilter21-d.gandi.net [217.70.178.149]) by relay5-d.mail.gandi.net (Postfix) with ESMTP id 979D141C08B; Sat, 13 Aug 2016 21:33:43 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at mfilter21-d.gandi.net Original-Received: from relay5-d.mail.gandi.net ([IPv6:::ffff:217.70.183.197]) by mfilter21-d.gandi.net (mfilter21-d.gandi.net [::ffff:10.0.15.180]) (amavisd-new, port 10024) with ESMTP id G00m7UXJj8Fv; Sat, 13 Aug 2016 21:33:41 +0200 (CEST) X-Originating-IP: 10.58.1.148 Original-Received: from webmail.gandi.net (webmail8-d.mgt.gandi.net [10.58.1.148]) (Authenticated sender: amirouche@hypermove.net) by relay5-d.mail.gandi.net (Postfix) with ESMTPA id 784D441C08A; Sat, 13 Aug 2016 21:33:41 +0200 (CEST) In-Reply-To: X-Sender: amirouche@hypermove.net X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4b98:c:538::197 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:12837 Archived-At: On 2016-08-13 20:33, Julian Graham wrote: > Hi Amirouche! > >> Can you explain in more details what this B+tree based storage engine >> is? >> And what is used for? > > Sure! > > Some context: gzochi is an application server for games written in > Guile. It provides various services to the applications that it hosts, > including data storage. The underlying implementation of the data > store (the "storage engine") is configurable - the framework comes > with a Berkeley DB storage engine and an in-memory storage engine. > (And you can write your own, if you wish.) > > All of the data structures manipulated by a game running in the gzochi > container - the game's "object graph" - are serialized and persisted > to the data store. The container guarantees a consistent view of the > object graph to each "task" that runs as part of the game, and it > handles changes to the graph transactionally. It's up to the storage > engine implementation to make sure that every transaction is isolated > from every other transaction, that deadlocks are resolved properly, > that each transaction either commits or rolls back atomically, etc. > The Berkeley DB-based storage engine relies on BDB for those things. > The in-memory engine uses a B+tree and intentional (R/W) locking to > implement transactions. > > The B+tree storage engine has a second function when running gzochi in > a distributed / high-availability configuration: It's used to cache a > subset of the object graph on each node in the cluster while that node > is executing game code that manipulates that part of the graph. (In > this configuration, the centralized "meta server" is responsible for > storing and retrieving the canonical version of the object graph.) > > Does that answer your question? Yes thanks! Based on a few tests wiredtiger is faster than berkeley db. You might consider having a look at it. https://framagit.org/a-guile-mind/guile-wiredtiger > > > Regards, > Julian -- Amirouche ~ amz3 ~ http://www.hyperdev.fr