Subcribe via RSS

Kyoto TycoonをJavaから利用する

2011/12/23 | Posted in db, java

Kyoto tycoonのセットアップは、以前のエントリを参照



Kyoto Tycoonの起動

memcachedプラグインを有効にして起動します。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

Xmemcachedというライブラリを使います。
参考:

Xmemcachedのダウンロード

JavaプログラムからKestrelを利用するために、Xmemcachedというmemcached用のライブラリを利用します。
http://code.google.com/p/xmemcached/downloads/list からxmemcached-1.3.5-bin-with-dependencies.tar.gz をダウンロードして利用します。



利用プログラム例
String hostname = "localhost";
String port = "22222";
int expiration_time = 0;

XMemcachedClientBuilder builder = new XMemcachedClientBuilder(
        AddrUtil.getAddresses(hostname + ":" + port));
builder.setTranscoder(new TokyoTyrantTranscoder());
MemcachedClient client = builder.build();

ArrayList<String> keylist = new ArrayList<String>();

try{
    // set data
    System.out.println("set data");
       for(Integer i = 0; i != 5; i++){
        String value = "value" + i;
        client.set(i.toString() , expiration_time, value);
        keylist.add(i.toString());
    }    

    // get data

    // bulk get
    System.out.println("bulk get");
    Map<String, Object> valuemap = client.get(keylist);
    for(Integer i =0; i != 5; i++){
        System.out.println(valuemap.get(keylist.get(i)));            
    }

    // single get
    System.out.println("single get");
    for(Integer i=0; i != 5; i++){
        String value = client.get(i.toString());
        System.out.println(value);
    }

    // delete data
        System.out.println("delete data from db");

    for(Integer i=0; i != 5; i++){
        client.delete(i.toString());
    }

} catch (TimeoutException e) {
    // memcached operation timeout
    e.printStackTrace();
} catch (InterruptedException e) {
    // ignore
    //e.printStackTrace();
} catch (MemcachedException e) {
    // memcached operation fail
    e.printStackTrace();
}




Tags: , , ,

kyoto tycoonをcentosにセットアップ

| Posted in centos, db

前準備

依存するpackageのインストール
gcc44がないと、makeできないから注意です。

sudo yum install gcc44 gcc44-c++ boost-devel zlib-devel
(libbzip2も必要かも)

kyoto cabinetインストール

まずはkyoto cabinetを入れます。

wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.70.tar.gz
tar zxf kyotocabinet-1.2.70.tar.gz 
cd kyotocabinet-1.2.70
./configure CC=gcc44 CXX=g++44
make
sudo make install

/etc/ld.so.conf に /usr/local/lib を追加
sudo ldconfig

kyoto tycoonのインストール


wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.52.tar.gz
tar zxf kyototycoon-0.9.52.tar.gz 
cd kyototycoon-0.9.52
./configure CC=gcc44 CXX=g++44
make 
sudo make install
sudo ldconfig


kyoto tycoonの起動


memcachedプロトコルで使いたいので、memcachedプラグインを有効にします

ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222'
永続化するためには、db ファイル名を指定する必要があるようです。
ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' [db filename]

[db filename]は、拡張子によってKyoto Cabinet内のdb(索引付け)が変わります。

(null): オンメモリ
“.kch”: ハッシュDB
“.kct”: ツリーDB
“.kcd”: ディレクトリハッシュdb
“.kcf”: ディレクトリツリーdb


ktserver -plsv /usr/local/libexec/ktplugservmemc.so -plex 'port=22222' test.kch

参考:





Tags: , , ,

VoltDBについて調べてるメモ

2010/12/10 | Posted in db

VoltDBは、オープンソースの高速なSQLデータベースです。

VoltDB: Fast, Scalable, Open-Source SQL DBMS with ACID


関連する日本語の記事。




VoltDBの元になった研究「H-Store」


ここから論文も読めます。

上から2つめの論文が短くまとまっているので、最初に読むのにいいかもしれません。


簡単に言うと、
  • メモリに乗るサイズのデータであることが必要
  • ログを作らないためデータ整合性が落ちる
  • 予め登録したクエリしか使えない
などの制約を設けることによってOLTP処理を高速化した、ということでしょうか。

DBは常に新しいモノが常にいろいろ登場して、どれが速いだとかいろいろ言われますが、どのような環境で、どのような目的で使うのか、によってどのデータベースがいいか異なるので、簡単に比べられません。

実際にいろいろ使ってみるしかないんでしょうか。




Tags:

VLDB09報告会で聞いた話

2009/12/12 | Posted in db

先週のことですが,VLDB報告会というのに行ってみました.

最初は原先生のワイアレスセンサネットワークの紹介のお話.

残念だったのは,「キラーアプリケーションはどんなものがありますか?温度とか明るさとか取って何ができますか?」と聞かれて,現状ではキラーアプリケーションというものはなく,火災検知だとか侵入者検知に利用できる,というような答えだったこと.

次は川口先生の無線LAN情報や加速度情報を集めている話.いろいろデータを集めて,実際にサービスにつなげている点が面白かった.



あとはVLDB2009の話.

VLDB2009
論文
発表スライド(一部)
論文の紹介は VLDB2009勉強会であったので(参加してないから分からない)今回はキーノートやパネルディスカッションなど参加しなければ分からない部分の説明でした.

keynote1
Cloud Data Serving: key-value stores to DBMSs
Raghu Ramakrishnan


この人の他の会議でのkeynoteと資料を見ることができます.
- Data Serving in the cloud

http://www.bigredbits.com/?p=175


http://www.cs.cornell.edu/projects/ladis2009/program.htm#keynote1

- Cloud Computing at Yahoo

http://www.cse.iitb.ac.in/~comad/2008/keynoteSpeakers.html

上に挙げた他のkeynoteと同じ話ということで,その資料を見ればいいそうです.
たぶんyahooのクラウドとDBの話.

スライドのComparison MatrixというページがいろいろなDBの比較がまとまっていました.

聞いたことがある名前と思ったら,勉強のために読んでいるDB本の著者でした.

keynote2
Bringing Database Research to Computer Games and Simulations
Johannes Gehrke

コンピューターゲームにDBの技術を利用したらとてもよかったという話?
自分は興味がなかったのであまり聞いていなかったが,面白いkeynoteだったらしい.

パネルディスカッション
How Best to Build Web-Scale Data Managers?

ウェブのようなスケールが必要とされる分野において利用されるデータ管理技術が,これまでDB屋が研究してきたものではなく,他のところで発表されていることに対して,議論しましょう,という感じなのか.RDBMS vs MapReduce

以下適当に抽出.

・なぜDBを使わずKVS?スケールさせるためにはACIDを犠牲にするしかないのか

・Google規模,ではなくもっと小さい規模のtwitterのようなサービスの規模でもその規模でもDBがスケールしないのが問題

・webでDBが使われなくなってきており,RDBの問題を認めてなくてはならない.我々はRDB中毒.

・ACIDやトランザクションがいるかいらないか,は用途による.アプリケーションが負担する部分を増やしていくことでスケールするシステムが作れる

・パラレルDBは無限にスケールすべきだが,スケールしない

・SQLは分散を意識していない.だからSQLでなくてもいいのでは.REST的なAPIがあればいいんじゃないか

・やっぱりトランザクションはいるよ.データを問い合わせるのにMapReduce書かなきゃならないなんて面倒

などなど.面白かった.

HadoopDB

そのあと少し論文の紹介があったけど,自分が聞きたかったこれだけ紹介.

HadoopのスケーラビリティとパラレルDBのパフォーマンスのいいとこ取りをすれば,いいものができるはず!という感じ.
パラレルDBの方がパフォーマンスがいいというのはSIGMOD2009の A comparison of approaches to large-scale data analysisで発表されていて,同じ人たちがHadoopDBを作ってベンチマークしてみた,という発表.

スライドはDetailed Program | VLDB 2009にあるので,それを見ればなんとなく分かります.評価は微妙かも・・・という感じ.

その他メモ

Hive:HadoopのSQLラッパー
Vertica: カラムストアのクラウドエディション?
MonetDB: カラムストアDB.10年前のVLDBで発表されて,今回10-year Award(10年前に発表されて,その後影響を与えた論文)に選ばれた.

大島さんの発表は面白く聞けてよかったです.




Tags: , ,

MacにMySQL入れた

2009/12/3 | Posted in db, mac

ちょっと必要があったのでMySQLをMac Bookに入れました。

いろんな手段があると思うけど、port使って入れた。
自分で言うのもなんだが、適当なのであまり参考にしない方がいいかもです。

$ sudo port install mysql5

これだけだとmysqlのコマンドが使えなかったので

sudo ln -s /opt/local/bin/mysql5 /opt/local/bin/mysql

をやります。

どうやって起動するのかよくわからなかったが、なんかさっき入れたのはサーバじゃないかも、と思い、

$ sudo port install mysql5-server

をやったところ、少しメッセージが出ました。

# A startup item has been generated that will aid in
# starting mysql5-server with launchd. It is disabled
# by default. Execute the following command to start it,
# and to cause it to launch at startup:

# sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist

起動時にMySQLサーバも起動したいならこれをやるといいらしいが、たまにテストでつかうだけなのでスルー。
* In order to setup the database, you might want to run
* sudo -u _mysql mysql_install_db5
* if this is a new install

こんなメッセージも出たので実行
$?sudo -u _mysql mysql_install_db5

またいくつかメッセージが出る。
You can start the MySQL daemon with:
cd /opt/local ; /opt/local/lib/mysql5/bin/mysqld_safe &

sudoがいるのでそのままコピペしてもだめです。あとcdはいらないような。
$ cd /opt/local ; sudo /opt/local/lib/mysql5/bin/mysqld_safe &

これで起動できたっぽい。
mysqlのrootパスワード初期化するのもさっきのメッセージにあったのでやる

To do so, start the server, then issue the following commands:
/opt/local/lib/mysql5/bin/mysqladmin -u root password 'new-password'
/opt/local/lib/mysql5/bin/mysqladmin -u root -h *****.local password 'new-password'


これでok.
つないでみる
mysql -u root -p

さっき設定したパスワードを入れてやると接続できた。
ここまでやってから調べてみたが、最初から

Mac Leopard に MySQL をインストールする – yuru-sawaの日記
あたりを参考にするとよかったと思います。




Tags: , ,
  • 書いてる人:

    Junichiro Takagi
    高木潤一郎

    http://tjun.jp
    mail@tjun.jp

    未踏でクリエータやってました。メーカーでエンジニアやってます。
    このブログは、会社とは関係なく個人の意見を書いています。

    RSS:


  • friendfeed: