編集可能

LevelDBを読む人たち

C++0xをしっかり使ったコードで勉強になります
38
SKS/ファントムの申し子 @repeatedly

LevelDBというのが公開されたらしい.自動でSnappyとかGoogleっぽさが滲み出ている > http://code.google.com/p/leveldb/

2011-05-17 01:19:12
SKS/ファントムの申し子 @repeatedly

とりあえず時間があったらLevelDB試す事にして寝るか

2011-05-17 02:06:04
SKS/ファントムの申し子 @repeatedly

ん?LevelDBってPutでWAL使ってるのか?

2011-05-17 02:54:15
SKS/ファントムの申し子 @repeatedly

あ,WAL使ってなかった.しかしどうやって非同期になってんだ?普通にmemcpyとかしてるようにしか見えんが…

2011-05-17 03:22:15
SKS/ファントムの申し子 @repeatedly

むー,LevelDBそのものにはあまり惹かれるものはないなぁ…

2011-05-17 02:43:12
Kazuki Ohta @kzk_mover

leveldb は sstable (log-structured merge tree) の実装に見える

2011-05-17 14:36:23
Yoh Okuno @yoh_okuno

@kzk_mover ドキュメントにもそう書いてありますねー http://j.mp/lGoluD

2011-05-17 15:23:06
Yoh Okuno @yoh_okuno

LevelDBはC++0xで書かれている…だと…?

2011-05-17 14:54:13
SKS/ファントムの申し子 @repeatedly

@nokuno なんと.昨日ソース読んでた時には気づきませんでした

2011-05-17 14:58:04
Yoh Okuno @yoh_okuno

@repeatedly Makefile見るに全部ですね。std::atomicが使われていたので気づきました http://code.google.com/p/leveldb/source/browse/trunk/Makefile

2011-05-17 14:56:45
Sadayuki Furuhashi @frsyuki

Google的にはC++0xはもうOKなのかな。

2011-05-17 15:27:44
SKS/ファントムの申し子 @repeatedly

@frsyuki Googleさん別にどこかに製品提供するわけじゃないし,自社サービスならなんも問題ない気がする

2011-05-17 15:30:04
Sadayuki Furuhashi @frsyuki

LevelDB を std:: でgrepしてみたけども、使っているのは std::atomic と std::memory_order_acquire くらい。あと unordered_{map,set} か。

2011-05-17 15:30:46
SKS/ファントムの申し子 @repeatedly

@frsyuki ロックしたくない!という強烈な意志表示がうかがえる

2011-05-17 15:31:37
Sadayuki Furuhashi @frsyuki

一応標準化はされているけども、どちらかと言うとコンパイラの独自機能として使っているという印象。あと \<__ でgrepすると、defined(__clang__) が出てくる。

2011-05-17 15:34:24
Sadayuki Furuhashi @frsyuki

環境依存のコードが port/ に色々入っていて、std::atomic を使っているのは port/prot_posix.h だけ。gcc なら問題ないでしょう的な印象。あと面白そうなのは db/skiplist.h db/memtable.h とか。

2011-05-17 15:38:45
SKS/ファントムの申し子 @repeatedly

@frsyuki GoogleさんのSSTableの疑惑があるから,色々入ってそう

2011-05-17 15:40:16
Sadayuki Furuhashi @frsyuki

@repeatedly 見た目sstableですね。wal+memtable。

2011-05-17 15:44:03
Sadayuki Furuhashi @frsyuki

std::atomic は SkipList を実装する為だけに使っているらしい。memtable が lock free の SkipList なのか。SkipList<Key, Comparator>。これだけでも便利そうだなぁ。

2011-05-17 15:46:38
分散処理に詳しいオタク @kumagi

levelDBあっさりコンパイル通って驚愕した。ターミナルに燦然と輝く-std=c++0xの文字。

2011-05-17 15:51:24
分散処理に詳しいオタク @kumagi

deleteだのdefaultだのじゃなくてDISALLOW_COPY_AND_ASSIGN(CondVar);というマクロを使ってるのはコンパイラがまだ対応してないからか

2011-05-17 16:10:07
分散処理に詳しいオタク @kumagi

levelDBのskiplistにremoveっぽいものがなくて、insertとcontainsしかないんだけど…。

2011-05-17 16:23:49
残りを読む(106)

コメント

コメントがまだありません。感想を最初に伝えてみませんか?