ラベル 非RDB の投稿を表示しています。 すべての投稿を表示
ラベル 非RDB の投稿を表示しています。 すべての投稿を表示

2011年10月29日土曜日

暇だから MongoDB でも入れてみるか

せっかくの休日、Eclipse の Xtext を試してみたかったのに、Indigo はコアダンプ吐いて即死するし、Helios はプロジェクトの作成に失敗するわで、15分くらいで心が折れた。

で、代わりの暇つぶしとして、最近 NoSQL について下調べしていて見かけた MongoDB とか言う奴でもいじってみようかなと思いつく。この辺りを参考(飽くまでも参考)にして、Fedora15 の 32bit 環境でやってみた。

実は、Fedora で管理しているMongoDB が「ソフトウェアの追加と削除」で最初からリストアップされてるんだけど、これをインストールしても、なんかちゃんと起動しなかった。

====

まずはインストールだけど、配布元の 10gen を Fedora (というか yum)に認識させるために、ファイル /etc/yum.repos.d/10gen.repo を作って以下の記述を追加する。

[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686
gpgcheck=0

そうすると、「ソフトウェアの追加と削除」にリストアップされるから、以下を選択して[適用]

  • mongo-10gen-server-2.0.1-mongodb_1
  • mongo-10gen-2.0.1-mongodb_1

インストールされたら、起動してみたい所だけど、その前に、なんかデータを保存するフォルダを作っとく必要があるらしい。

$ sudo mkdir -p /data/db/
$ sudo chown `id -u` /data/db

準備ができたので、Fedora の[サービス]ツールで mongod を開始する。

端末で、mongo を起動して動作確認。

$ mongo
> one = {name: "one", value: 1}
> two = {name: "two", value: 2}
> three = {name: "three", value: 3}
> db.things.save(one)
> db.things.save(two)
> db.things.save(three)
> db.things.find()
{ "_id" : ObjectId("4eabd63586daea21618266ca"), "name" : "one", "value" : 1 }
{ "_id" : ObjectId("4eabd63786daea21618266cb"), "name" : "two", "value" : 2 }
{ "_id" : ObjectId("4eabd63a86daea21618266cc"), "name" : "three", "value" : 3 }
> db.things.find({name:"one"}, {_id:0})
{ "name" : "one", "value" : 1 }
> db.things.find({value:2}, {name:1})
{ "_id" : ObjectId("4eabd63786daea21618266cb"), "name" : "two" }
> db.things.find({value:3}, {name:1,_id:0})
{ "name" : "three" }

ちゃんと動いてるらしい。

次は、java コードから動かしてみたい(チュートリアル)。

2011年5月31日火曜日

Hadoop

今日、初対面の技術者との会話の中で、ハドゥープという単語が出てきた。最初よく聞き取れず、「はぁ?ハヌですか?ハドブ?」なんて聞き返してしまった。恥ずかしい。

帰宅して、ヤマ勘で Hadoop とタイプしてググってみると、ちゃんとスペルが合ってたらしく、それっぽいのがたくさん引っかかってくる。その中に、Apache Hadoop とかいうのがある。うん、なんか知らないけどこれだろ、これ。

つうか、どこの馬の骨とも知れないマイナー製品かと思ったら、れっきとした ASF の Top Level Project らしい。YouTubeでも、たくさん動画がある
※ちなみに、「ハデュープ(敢えて五十音にマッピングすると)」って感じで発音してる欧米人も多い。
簡単に言うと、分散コンピューティング環境上で稼働する大量データ処理フレームワークで、分散ファイルシステム、分散DB、MapReduce の Java 実装なんかが含まれているらしい。Google の既存製品やプログラミングモデルに影響を受けているとの事。

下の動画が、紹介レベルとしては能くまとまってる感じ。(ただし音声は滅茶苦茶に酷いが)


しかし、こんな有名で面白そうなのを知らなかったのか、俺…。

まあ 2年以上、仕事としては Java から離れていたわけだけど、
うーん、やっぱブランクかなあ…

2009年11月29日日曜日

Caché / Jalapeño / jdk1.6

初めて Caché をダウンロードして、Java API の Jalapeño を使ってみた。

2年半ほど昔のこの記事を参考にやってみた。

記事で使っていたプロダクトとの、以下のようなバージョンの違いがある。
記事当時
JDK1.51.6
Eclipse3.23.5
Caché2007.12009.1

内容は、
  1. Eclipse で POJO を定義する
  2. POJO を元にして Caché データベース上にクラスを作る
  3. Caché データベース上に出来てきたクラスを「スタジオ」ツールで確認する
  4. Java コードから POJO を 永続化し、続いてそれを読み出す
  5. 永続化されたオブジェクトを管理ポータルで見てみる
といったもの。

ほとんど問題なく記事どおりに作業できるが、上リスト2に関して、どうも CacheDB.jar に、 com.jalapeno.tools.SchemaBuilderWizard が見当たらないので、ここを見ながら properties ファイルに設定情報を書いて、これを SchemaBuilder の -f オプションで与えて動かした。

試行した内容に限っていうと、コーディング的には JPA / Hibernate とそれほど変わらない感じ。JPA の EntityManager、Hibernate の Session に当たるものに ObjectManager というものがあって、これをつかって CRUD やトランザクション操作を行うが、これを初期化するために JDBC の Connection を与えているのを見ると、もしかすると結構ベタに SQL を投げている気配が無いでもない。

生産性の観点でいうと、あまり他の言語と組み合わせないで、Caché のテリトリー(Zen, CSP 込み)内で、Caché メインで開発したときに、一番生産性が高そうな感じ。パフォーマンスに関しては高速が謳い文句だけど、Jalapeño 経由で Java から操作しても速いかどうかは、別途調べる必要があるかもしれない。

読み方は、Caché (キャシエ)に Jalapeño(ハラーペーニョ)。é はフランス語(カナダ)キーボード設定で[/]キー、ñ はスペイン語(トラディショナルソート)キーボード設定で[;]キー。