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 D860C10F6F for ; Fri, 25 Oct 2013 19:34:25 +0000 (UTC) Received: (qmail 57765 invoked by uid 500); 25 Oct 2013 19:34:21 -0000 Delivered-To: apmail-directory-dev-archive@directory.apache.org Received: (qmail 57569 invoked by uid 500); 25 Oct 2013 19:34:15 -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 57557 invoked by uid 99); 25 Oct 2013 19:34:13 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Oct 2013 19:34:13 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of elecharny@gmail.com designates 74.125.82.48 as permitted sender) Received: from [74.125.82.48] (HELO mail-wg0-f48.google.com) (74.125.82.48) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 25 Oct 2013 19:34:08 +0000 Received: by mail-wg0-f48.google.com with SMTP id b13so4294327wgh.15 for ; Fri, 25 Oct 2013 12:33:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=c/wDEUtsc1Mwf77DAFYiq70BVNkFdXFJnV+WR1QbAh4=; b=cZYKYuFjdgK11lI5eCkqgVFFZ7MhBMGwpLZKtPIrY1s6hr+5kxOnRnQLp8Mv7ZbXlT aJSuUweVyND9p2J8l9OW2+MLdZVssNWYyyE0x/VHkXtE4YmmcWvrrLV8fnqabsSWaaqB 2FZoxCdxyKcHxXs5ZkFv6G6b07dMoYv4KcMX0uScar1cexGNV74arTWIV8wmN47GE6X6 9TUCytcI6Oq9FP5Ltv1Q3V97k4wK9q4N6SgNDYvq6Te6m/NaCqPEHLpygc59euLve/BB Ja59RUIVYH8u6FzNpZNaAzuc7tJZgoNs2nYYqwMku7tUrzZNrCLlF37ca3tNo1si4iQI aE1g== X-Received: by 10.180.73.109 with SMTP id k13mr3755637wiv.35.1382729627027; Fri, 25 Oct 2013 12:33:47 -0700 (PDT) Received: from Emmanuels-MacBook-Pro.local ([212.195.127.200]) by mx.google.com with ESMTPSA id mw9sm9251875wib.0.2013.10.25.12.33.44 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 25 Oct 2013 12:33:45 -0700 (PDT) Message-ID: <526AC798.1050808@gmail.com> Date: Fri, 25 Oct 2013 21:33:44 +0200 From: =?UTF-8?B?RW1tYW51ZWwgTMOpY2hhcm55?= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: Apache Directory Developers List Subject: [Mavibot] Heads up X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Virus-Checked: Checked by ClamAV on apache.org Hi ! I fnally found some time in the train those last two days (nothing beats 7 hours in a train when it comes to code isolated from life and its contengencies ;-) to complete what I was working for. Here is a quick status : o we now have two BTree, in-memory and managed o the keys and values are stored in Holders (KeyHolder and ValueHolder) which store the raw representaion (ie, as byte[]). This save a hell lot of time when we just load a page, read one value and discard the page from the cache o a cache is now used to store Nodes and Leaves o when we have multiple values for a key, we store them as an array of values if we have less than a given number (the threshold), then we switch to a sub-btree o currently, we switch to sub-btrees when we have more than 8 values It works, I was able to use it in ApacheDS, and I was able to inject 100 000 entries in the server in around 30 mins (around 55 addition per second). There is room for improvements though : o when we switch to sub-btree, we inject all the array's values one by one, and the sub-btree is written on disk as many times as we have values. This is sub-optimal o the findPos(K) method is called too many times (twice more than needed) o the sub-btree are not cleaned when we don't need them anymore o we need more tests, especially performance tests o the code needs a bit of cleanup, so does the Javadoc I will commit what I was working on in the last 3 weeks, and we may cut a 0.2 just after. -- Regards, Cordialement, Emmanuel Lécharny www.iktek.com