LevelDBを読む人たち

C++0xをしっかり使ったコードで勉強になります
38
SKS rep @repeatedly

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

2011-05-17 01:19:12
SKS rep @repeatedly

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

2011-05-17 02:06:04
SKS rep @repeatedly

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

2011-05-17 02:54:15
SKS rep @repeatedly

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

2011-05-17 03:22:15
SKS rep @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 rep @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 rep @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 rep @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 rep @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
1 ・・ 6 次へ