分散データベースをベンチマークするチェックリスト

はじめに ベンチマークとは、正確にちゃんとやろうとすると凄く時間のかかるもので、結局のところ、どこかを妥協しないといけないものだと思います。しかし時間を節約しようとサボってやると、何の知見も得られず、最悪誤った判断を与えて、信頼性を落として…

EC2 AMI作成&Auto Scaling設定スクリプト

すんすくです。 AWSで一番好きなサービスはRDSです。 AWS上でApacheなどstatelessな鯖をAuto Scalingで立ち上げたいことはよくあります。 instance storeなAMIでAuto Scalingする場合は以下の操作が必要です。 instance storeなインスタンスのAMI化 Auto Sca…

シリコンバレーから帰ってきて

まだ微妙に時差ぼけに苦しみながら少しブログ書いてみます。CassandraSFは前夜祭含め2日間のイベントだったのですが、 その後いろいろアポとって、合計一週間滞在しました。せっかく来たということで予定をバシバシ入れると、 こんなスケジュールになってし…

CassandraSF2011に行ってきた!

MyCassandraの宣伝の為にCassandra SF2011@Mission Bay Conference Centerに行ってきたので、 いち早く報告ブログを書いてみます。発表内容は録画されており、また人によってはスライド公開もされるので、 深い話については述べずに、あくまで一参加者として…

MyCassandra-0.2.0リリース

06/13(現在)リリース予定のMyCassandra-0.2.0の日本語ドキュメントです。 後で変更の可能性大ですが、とりあえずあげてみますw MyCassandra View more presentations from Shunsuke Nakamura

クラウド系の国際会議メモ

ここのサイトによると28種類あるらしい。 http://sites.google.com/site/cloudcomputingsystem/conference Workshop on Virtualization in High-Performance Cloud Computing Cloud computing for the Public Sector (CCPS) The International Workshop on t…

MyCassandraというモジュラー式のNoSQLを作ってます。

今まではCassandra-0.6.2をベースに開発を行っていましたが、 せっかく公開するならば、新しいバージョンでやるべきと考え、現在MyCassasndra-0.7にアップグレードを行っているところです。近いうちに公開できるよう頑張ります!今日はMyCassandraに関するド…

TTからCassandraへのインポート

Cassandra-0.6にもsstable2json, json2sstableというimport/exportするコマンドがあるが、 これは内部用のものなので、他のDBからのインポート用にはそのまま使えない。しかも実際使ってみたけど1G程度のJSONインポートでヒープが足らんと言われてしまった。…

MySQL6.0アップデートのやりかた

fedora13で動作中のMySQL5.1からMySQL6.0にアップデートしたのでメモ。 事前準備 yumで入れたmysql,mysql-server(MySQL5.0)が入っていて既に動作しているものとする。以下をyumで入れておく ncurses-devel gcc-c++(falconのコンパイルなどに必要) 作業 最新…

MySQLメモ

はじめに MySQLについてメモします。主にアーキテクチャやパフォーマンスに関わる部分を中心に。 参考にした本 実践ハイパフォーマンスMySQL サーバーアーキテクチャ レイヤー1 接続処理、認証、セキュリティなど その他ネットワークベースの一般的なクライ…

Hatena 2010 サマーインターンに採用されました。

去年の夏から「来年は絶対にどこかしらのインターンの参加しよう!!」と思い、どこがいいかなぁと探していて一番面白そう、というか一番情報源が豊富だなーと思って目をつけていたのが、このHatenaのインターン。既に別のインターンの面接に落ちていて自信…

MyCassandraにRedisを追加

MyCassandraでRedisを使えるようにしました。前述の通りJDBCを使うJDBC-Redisは実装がいまいちでしたので、独自api実装のJRedisを利用するようにしました。これでMyCassadraは物理ストレージとしてSSTable,MySQL,Redisを使うことが出来ます。(Dynamo的な部分…

MySQLのバルク処理は書かなきゃ駄目。

db

前回のYCSBのload phaseがMyCassandra(Cassandra+MySQL)ではめちゃくちゃ遅いという件でしたが、タイトル通りです。さて大量のインサートをするときに、以下の3つの手法によってどれくらい差が出るのだろうか? singleインサートを何度もやる マルチプルイ…

遅いのはSQLパーサー?

db

前述したYCSBを使ってCassandraとMyCassandraのベンチマークを取っているところ。まだ途中なのでちゃんとした結果は公表出来ないのですが、とりあえず1ノードで1KBのレコードを100万件ロードして、ベンチをとったところ、基本的に予想通りな結果になってます…

JDBC-Redisは使えない

db

MyCassandraとは別にCassandraのMemTable,SSTableを別のデータベースに差し替えてみようと考え、試しにKVSのRedisに注目した。Redisは簡単に言うと永続化可能なmemcachedであり、 通常はオンメモリなKVSと動作し、インターバルごと、書き込みの頻度、もしく…

YCSBパラメータ

db

実行パラメータ load: loading phaseを実行 t: transaction phaseを実行 db: 使用するdbインタフェース層 P: workload用のファイル hosts: サーバーホスト(コンマで区切って複数指定可能) recordcount: ロードするレコード数(デフォルトは1,000) threads: YC…

YCSB導入

db

実装したMyCassandraをフォーマルなクラウドベンチマークで測定する為にgithubのWikiを参考にYCSBを導入した。http://wiki.github.com/brianfrankcooper/YCSB/getting-startedまずはCassandraについて動かせるようにしたのでメモしておく。 Cassandraのバー…

No More KVS

db

Cassandraよりも早いオンメモリRDBとされるVoltDBについて調べてて思ったのだが、一般的なRDBは例えオンメモリでもKVSには遠く及ばないわけだけど、 そこで原因になってるSQLレイヤーを介さずにC++によるUDF使って直接RDBのストレージにアクセスする手法はど…

MyCassandra測定

Yahoo PNUTSの論文を読んでみて、 別にNoSQL使わなくてもMySQLでも性能は出るんじゃないかと思い、 CassandraのSSTableをMySQLに入れ替えたMyCassandraを実装しました。シーケンシャルな書き込みを重視するCassandraですが、MyCassandraではMySQL同様に書き…

Cassandraのロック機能

ReentrantReadWriteLockクラスを使ったロック 読み込みロックは複数のスレッドが取得できる 書き込みロックは1つのスレッドのみが取得できる 読み込みロックの取得中は、他のスレッドは書き込みロックを取得できない 書き込みロックの取得中は、他のスレッド…

Love Is A Many Splendored Thing

邦題では「慕情」というのでしょうか。哀愁ただよう良い曲です。今回紹介したいのは2つのアーティスト Clifford Brown, Max Roach Quintet 5拍子を絡めた急速調な演奏, ソロは4拍子。超カッコいい。 Roma Trio Luca Mannutza(P) Gianluca Renzi(B) Nicola A…

こういうライブが聴きたい。

CassandraのIO

org.apache.cassandra.ioに実際のSSTableのファイルを読み書きするパッケージが定義されている。 org.apache.cassandra.io.SSTableWriter 以下で使用される memtableからsstableへの書き出し sstableのCompaction dataFileはBufferedRandomAccessFileオブジ…

列指向RDBMSまとめ。

db

はじめに 列指向RDBMS(Infobright,InfiniDB,LucidDB,MonetDB)について調査したものを以下にまとめます。 まとめ Infobright MySQL上にビルド 開発状況はプロダクション/安定、ドキュメントが充実しており、インストールなど扱いが容易そう。 圧縮性能が特に…

Cassandraのbootstrap

org.apache.cassandra.service.StrorageService initSearver Cassandraサーバーの初期化 bootstrapの最初に担当範囲分のloadを得るためにgossip serviceをstartする。 ここからは、configファイルのautobootstrap項目がtrue/flaseで挙動が変わる trueの場合…

mt3からmt5へアップグレード方法

mt3(カスタムフィールドはplugin)からmt5は、単純なアップグレードではうまくいきませんでした。。単純なアップグレードでは上手くいかないことは以下2点 カスタムフィールドの移行 システムテンプレートの移行 両方ともdbのテーブルがmt3,5で異なるようで、…

Highway Rider/Brad Meldau

巷で最もナウくてホットなジャズピアニストといえば、この人「Brad Mehldau」Brad Mehldauの新作「Highway Rider」を買いました。メンバーにはジョシュアレッドマンやオーケストラが参加しています。このCDの感想は、 1枚通してストーリを感じるというか、…

TrumpetStationに行ってきた!

フリューゲルホルンのマッピを買いに渋谷のTrumpetStationに。 今回が始めて。店内は割と狭めだったけど、店員さんが親切でいろいろと試奏させていただいた。選択肢としては stork shilke back denis wick があり、個人的な順位はschike>>stork,denis wick>b…

Cassandraの論文

Cassandraの論文なんて無いのかと思ってたけど、 よく調べたらありました(^^;)2009年のLADISでFacebookの人が発表したもののようです。タイトル: Cassandra - A Decentralized Structured Storage System 著者: Avinash Lakshman, Prashant Malik(Facebook)…

Cassandraの書き込み

Commit Log=>MemTable RowMutationの送信 org.apache.cassandra.avro.CassandraServer commit logに書かれた内容をRowMutationとして適当なレプリカノードに送信する StrageProxyからmutate関数を呼ぶ. org.apache.cassandra.service.StorageProxy mutate関…