Return-Path: X-Original-To: apmail-directory-dev-archive@www.apache.org Delivered-To: apmail-directory-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3AADD186E3 for ; Sat, 3 Oct 2015 06:18:05 +0000 (UTC) Received: (qmail 78413 invoked by uid 500); 3 Oct 2015 06:18:05 -0000 Delivered-To: apmail-directory-dev-archive@directory.apache.org Received: (qmail 78348 invoked by uid 500); 3 Oct 2015 06:18:05 -0000 Mailing-List: contact dev-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Apache Directory Developers List" Delivered-To: mailing list dev@directory.apache.org Received: (qmail 78336 invoked by uid 99); 3 Oct 2015 06:18:04 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 03 Oct 2015 06:18:04 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 49EE1C1E08 for ; Sat, 3 Oct 2015 06:18:04 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.121 X-Spam-Level: X-Spam-Status: No, score=-0.121 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id 6bc77h2AXaBf for ; Sat, 3 Oct 2015 06:18:03 +0000 (UTC) Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 15924203BD for ; Sat, 3 Oct 2015 06:18:03 +0000 (UTC) Received: by wicge5 with SMTP id ge5so58137042wic.0 for ; Fri, 02 Oct 2015 23:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=to:from:subject:message-id:date:user-agent:mime-version :content-type:content-transfer-encoding; bh=sPfQ/F/hGqff5KBvr4RuL+VLIwviG8nb4FLGAeIZaCc=; b=GT4CAoKLzBlIDUsVFN2dSaEidvFpns33yVcKwV9KX3+xJrnKHZC3v4hfRrV9/w0Lx1 hDutS+SBvL1j2ZaVz2BJXiMlasPhemllfrzYD1Rg0GLi9xLQw61EsQo5KTBJlwvctWFf T8kRY/Wt2hi4S4TLYQgHhhCnz/OMbg0MQuqTGfn079FjxazMP7y52sTsfCcMIITwBKhT qVWFu5Jf2dpKxZlMik6hiSZ53iUW422/bLzeWS9P1jWmVyWwqZ9OkBij5S0bdAIXrUGx vQ8n+u2QGQqrV+pTCi7k42CRQp29F6oACjZTE1cop//82jdUe2ui2Ugh/YlTGzElwe1R MBXQ== X-Received: by 10.194.234.71 with SMTP id uc7mr19570033wjc.105.1443853081817; Fri, 02 Oct 2015 23:18:01 -0700 (PDT) Received: from [192.168.0.147] (catv-80-98-57-8.catv.broadband.hu. [80.98.57.8]) by smtp.googlemail.com with ESMTPSA id bv2sm14818686wjc.11.2015.10.02.23.18.00 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 02 Oct 2015 23:18:01 -0700 (PDT) To: Apache Directory Developers List From: =?UTF-8?Q?Emmanuel_L=c3=a9charny?= Subject: [Mavibot] ApacheCon discussions X-Enigmail-Draft-Status: N1110 Message-ID: <560F7313.6000101@gmail.com> Date: Sat, 3 Oct 2015 08:17:55 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi guys, we had some interesting discussion with Kiran and Shawn during the Apache Conference this week. We spent some time on Mavibot and here are a few thoughts we had about it : - We should not have a support of multiple^values in Mavibot. This makes the code too complex to handle, and this could be done at a upper level (like what we have for JDBM). At the end, Mavibot should only be a strict Key/Value store - We don't need to have two flavor of BTrees (Persisted and InMemory). This is the Manager role : we can have a PersistedManager and a InMemoryManager - The transaction support has been lenghtly discussed, and we think we have a valid specification for it : - hat we need to explicitely start and terminate a transaction, instead of have an implicit start (as we currently have) - we need a WorkingMemory to hold modified pages - as we are going to modify pages instead of copying them, we need a different implementation fo the very basic B-tree insert/remove operations for this case - revisions will be cross-btrees, and actually will reflect the transaction manager revision, so we may have holes in teh numbering for a goven btree - managing versions will be done using a list with no lock - Cleaning up the pages can be done at teh end of an update, by what we now call the Recycler. We can clean old revisions, starting by the oldest and up the list, until we meet a revision which is in use. We can also cleanup not use revisions, at least for the pages that have been copied in the revision immediately upper. - Last, not least, we discussed about the fact that we may have two threads to manage updates and recycling : the contention will be minimal and teh gain can be hudge, as we won't anymore have to process with the cleaning after the update is completed. I'll come with some more complete explaination and document on those specification when back home. I have created a branch to paly with those ideas : mavibot/branches/single-value. This branch is where we are going to experiment. Thanks !