2010年12月19日日曜日

Scala+Lift+Cassandraの環境構築

今月に入ってからScala+Lift+Cassandraのプロジェクトを遂行中ですが、リソースを探すのと環境をつくるのに結構な手間がかかったので同様のプロジェクトを考えている方の参考までにまとめておきます。

ドキュメントと関連資料
▼Scala/Lift関連
Lift本家
Scala本家
ScalaでWeb開発 (1) Scala, Maven, Liftをインストール
scalaのWebフレームワーク liftで遊ぶ 目次
Hectar Client Doc(ScalaとCassandraのラッパー)
▼Cassandra関連

▼IDE

▼ビルドツール

▼その他
Google Code Search(Githubなどにコミットされているソースコードを見れます)
私はNetBeans+Maven+Scala/Lift+Cassandraの環境で構築しました。

Hectorを使うと便利
Hectorライブラリを使うとデータの取得、追加、削除をシンプルに記述出来ます。

【取得例】
クラスター名:ST Cluster
キースペース名:ST KeySpace
カラムファミリ名:Index
キー:seiya.terashima@xxx.com
カラム:id

package com.seiyablogproject.snippet

import _root_.scala.xml.NodeSeq
import _root_.net.liftweb.util.Helpers
import Helpers._
import me.prettyprint.cassandra.serializers.StringSerializer
import me.prettyprint.hector.api.{Cluster,Keyspace}
import me.prettyprint.hector.api.beans.HColumn
import me.prettyprint.hector.api.exceptions.HectorException
import me.prettyprint.hector.api.factory.HFactory
import me.prettyprint.hector.api.mutation.Mutator
import me.prettyprint.hector.api.query.{ColumnQuery,QueryResult}

class HelloWorld {
   def test(in: NodeSeq): NodeSeq = {
    //クラスタ接続
    val cluster = HFactory.getOrCreateCluster("ST Cluster", "localhost:9160")
    //キースペース接続
    val keyspace = HFactory.createKeyspace("ST KeySpace", cluster)
    //クエリ
    val columnQuery = HFactory.createStringColumnQuery(keyspace)
    //クエリ実行&結果セット取得&値取得
    val uid =  columnQuery
                 .setColumnFamily("Index")
                 .setKey("seiya.terashima@xxx.com")
                 .setName("id").execute.get.getValue
    //クラスタ接続をシャットダウン
    cluster.getConnectionManager.shutdown
  }
}

リアルタイムアプリを作っていて実感したのは、やはりLLには限界があるということ。
かといって1社が独占している技術にコミットメントするフラッシャーにもなりたくない。
現時点ではScala/Liftがベストプラクティスかな。

0 件のコメント:

コメントを投稿