From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: ** X-Spam-Status: No, score=2.3 required=5.0 tests=AWL,DNS_FROM_RFC_POST, SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 05F7DBBAF for ; Mon, 15 Dec 2008 09:33:27 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An8BAIKlRUnRVd0Vimdsb2JhbACTFT4BAQEKCQwHDwWuToEEiioBAwEDgns X-IronPort-AV: E=Sophos;i="4.36,223,1228086000"; d="scan'208";a="32650024" Received: from mail-qy0-f21.google.com ([209.85.221.21]) by mail4-smtp-sop.national.inria.fr with ESMTP; 15 Dec 2008 09:33:26 +0100 Received: by qyk14 with SMTP id 14so2427059qyk.3 for ; Mon, 15 Dec 2008 00:33:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:from:to :content-type:content-transfer-encoding:mime-version:subject:date :x-mailer; bh=HfOwpNvx7W/kQCOxU/HfMsA7BcDEretA8qjxMsnsu0A=; b=vMHwkvqWcRiqStz/hVDroOKRQKmdf/be/Oio8t/qpHBDyP5l8GuE+fXGe+tvuVAvWw 06Nbr/EuKz5/wSDe0fjlbLyD0pMGvdwT/oKn2VFB1j4HbFNoRy1GR1268n3n6IOF5ZgS ydbsbYkKxduvn1tAGbl+SR2jg9B60eN5JM1Zo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:from:to:content-type:content-transfer-encoding :mime-version:subject:date:x-mailer; b=QdVY0dg0SkuBI/sIfBPX1rbyjcQe3EFgjf3asf8C+EOONSNVbvMX/19eInb69Ngqdp etpff/PzHZkPsoY5m0DDkNmmq8ORkOv5r8YAPOLPg6uGOczBqRZZGwDCX9/yfqJhhdup ZebfXGwR/GNsI8uuUGBqPTAVzDu47VG1kmA6Q= Received: by 10.214.60.14 with SMTP id i14mr7245227qaa.217.1229330004093; Mon, 15 Dec 2008 00:33:24 -0800 (PST) Received: from ?192.168.1.102? ([64.30.3.122]) by mx.google.com with ESMTPS id 6sm12123777ywi.54.2008.12.15.00.33.22 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 15 Dec 2008 00:33:23 -0800 (PST) Message-Id: <5DCF5682-2408-4F8E-AD92-964A75B77DFB@gmail.com> From: Alexy Khrabrov To: caml-list@yquem.inria.fr Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v929.2) Subject: fast functional in-memory database? Date: Mon, 15 Dec 2008 03:33:18 -0500 X-Mailer: Apple Mail (2.929.2) X-Spam: no; 0.00; in-memory:01 apl:01 in-memory:01 ocaml:01 ocaml:01 cheers:01 formalism:01 data:02 functional:02 seems:03 guess:04 transform:05 vector:05 underlying:06 elegant:10 I've looked at APL descendants like J (jsoftware.com) and Q (kx.com), and found Q very interesting due to its underlying in-memory database, kdb+. It made me think of a way to experiment with it in OCaml. The idea is that once you marry vector/list processing with very fast SQL- like in-memory database, you get a fast and elegant formalism to transform the data. Is there anything which can be plugged into OCaml to play the role of the database? I guess even SQLite can be used with in-memory tables, or better yet PG'OCaml, yet it's the tight integration seems the main strength of kdb+... Cheers, Alexy