Return-Path: Delivered-To: apmail-cassandra-user-archive@www.apache.org Received: (qmail 60073 invoked from network); 26 Apr 2010 19:12:24 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 26 Apr 2010 19:12:24 -0000 Received: (qmail 69319 invoked by uid 500); 26 Apr 2010 19:12:23 -0000 Delivered-To: apmail-cassandra-user-archive@cassandra.apache.org Received: (qmail 69302 invoked by uid 500); 26 Apr 2010 19:12:23 -0000 Mailing-List: contact user-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cassandra.apache.org Delivered-To: mailing list user@cassandra.apache.org Received: (qmail 69294 invoked by uid 99); 26 Apr 2010 19:12:23 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Apr 2010 19:12:23 +0000 X-ASF-Spam-Status: No, hits=-0.2 required=10.0 tests=AWL,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of tsaloranta@gmail.com designates 209.85.217.214 as permitted sender) Received: from [209.85.217.214] (HELO mail-gx0-f214.google.com) (209.85.217.214) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Apr 2010 19:12:18 +0000 Received: by gxk6 with SMTP id 6so281163gxk.5 for ; Mon, 26 Apr 2010 12:11:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=jzJccZsmh+lNxCXRRYA5Wy1lafM1KC8sLCF41C9k6gs=; b=hJMTA+4yDOHHH+zf9xGtsixoGlhaT+uMPSqUa0O7IAuMW7bEL2nXmhf60iy8UVtZN3 g0fIzIyKhk8ZLZS5MwVwB/mdx0AeC9u7Rb+j6dxma/u0mgqEZmY/PbQGBEo3eyKxqbfs Hsnw0C8k1GBgqyBGpEajrwMvEAlIp/rwhbP84= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=rA50wTPiSriUAgAEuik/36KIYLlUAe1Q14FePqF2uf8+QQO+15mrxKNi+mfuKmSCGk 17BIBFIqki7IXumA78p++LAsnmKxvW2Qe/oY7/hKIcgfxk3hQXTf0Z1OJa9fxwVkZSt/ 6FTox+2MOjt5xYSnyqGaL0/x1iVhS/3NF9Zmw= MIME-Version: 1.0 Received: by 10.91.168.7 with SMTP id v7mr2282665ago.87.1272309117540; Mon, 26 Apr 2010 12:11:57 -0700 (PDT) Received: by 10.90.93.17 with HTTP; Mon, 26 Apr 2010 12:11:57 -0700 (PDT) In-Reply-To: <4BD5CEF5.70500@endpoint.com> References: <4BD5CEF5.70500@endpoint.com> Date: Mon, 26 Apr 2010 12:11:57 -0700 Message-ID: Subject: Re: ORM in Cassandra? From: Tatu Saloranta To: user@cassandra.apache.org, ethan@endpoint.com Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Mon, Apr 26, 2010 at 10:35 AM, Ethan Rowe wrote: > On 04/26/2010 01:26 PM, Isaac Arias wrote: >> >> On Apr 26, 2010, at 12:13 PM, Geoffry Roberts wrote: >> ... >> In my opinion, a mapping solution for Cassandra should be more like a >> Template. Something that helps map (back and forth) rows to objects, >> columns to properties, etc. Since the data model can vary so much >> depending on data access patters, any overly structured approach that >> prescribes a particular schema will be of limited use. >> > For what it's worth, this is exactly my opinion after looking at the prob= lem > for a bit, and I'm actively developing such a solution in Ruby. =A0I spen= t ... > So, for my approach, there's one project that gives metaprogramming > semantics for building the mapping behavior you describe: build classes t= hat > are oriented towards mapping between simple JSON-like structures and > full-blown business objects. =A0And a separate project that layers Cassan= dra > specifics on top of that underlying mapper tool. +1 I think proper layering is the way to go: it makes problem (of simple construction of services that use Cassandra as the storage system) much easier to solve, divide and conquer. There are pretty decent OJM/OXM solutions that are mostly orthogonal wrt distributed storage part. I understand that there are some trade-offs (some things are easiest to optimize when Cassandra core handles them), but flexibility and best-tool-for-the-job have their benefits too. -+ Tatu +-