なんとなく速いデータベースっていいよね?って思うけど、SurrealDBの場合、速さのために大事な「データの安全」をちょっと我慢してるらしいんだよね🤔✨
この話、ちょっとビックリだったからシェアしたい💡
SurrealDBって何?
ざっくり言うと、SurrealDBは新しいタイプのデータベースで、「速さ」と「使いやすさ」を売りにしてるんだ。
使ってみた人は「めっちゃ速い!」って言うけど、その速さがどこから来てるかをちゃんと知るのは大事だよね🌸
ベンチマークって何?
ベンチマークっていうのは、簡単に言うと「どれくらい速いかテストすること」だよね。
SurrealDBはこのベンチマークでいい数字を出して、「うちが速いよ!」ってアピールしてるわけ✨
でも、ここで問題なのが、
その速さを出すために「データの安全(耐久性)」を犠牲にしている可能性があるってこと💭つまり、急いで結果を出すあまり、大事なデータが消えたり壊れたりするリスクを増やしてるかも…って話なんだよね。
データ耐久性って?
データベースにとって「耐久性」は超重要。
例えば、パソコンが急に落ちたり電源切れたりしても、保存したデータがちゃんと残ってること。これがあるから安心して使えるんだよね🥺
SurrealDBは、テストで速く動くために、この「ちゃんと保存する」仕組みをゆるくしてるらしい…😳
じゃあ、どういうこと?
ブログ記事(https://blog.cf8.gg/surrealdbs-ch/)によると、SurrealDBはデータをディスクにすぐ書き込まない設定でテストをしてるみたい。
これだと、確かに速くなるけど、急に止まったときにデータが消えちゃう危険があるんだって!
普通の信頼できるデータベースは、こういう時でもデータ失わないように工夫してるから、単純に速さだけで比べるとちょっとズルい感じもするよね😅
まとめ
- SurrealDBはめっちゃ速いけど、
- 速さの裏で「データを失うかも」ってリスクを抱えてる場合がある
- ベンチマーク結果だけ鵜呑みにすると、思わぬトラブルになるかも
ベンチマークの数字を見るときは「何を犠牲にしてるか?」もちゃんと考えるのが大事なんだなぁ…って思ったよ!💭✨
新しいものはワクワクするけど、ちゃんと中身も見てから使いたいよね😆🎀
コメント
ハンナ
Redditをやめたくないなら、SurrealDBでRocksDBやSurrealKV使うなら必ず環境変数でSURREAL_SYNC_DATA=trueにしないとヤバいよ。
エイダン
何度見ても笑える。
ジョージ
SurrealDB開発者の返信はこちら。
ベン
でもこれって*webscale*じゃん!
サラ
ほぼ現実離れしてるね。
リリー
MongoDBのバージョン2みたいなもの?
ロバート
こんにちは、SurrealDBの創設者です👋 いくつか説明させてください:デフォルトでSURREAL_SYNC_DATAはオフで、これは性能のためで他DBと整合性を取るためです。 WALを使ってるのでクラッシュしてもデータベースが壊れることはありません。 SurrealKVはまだ開発中で、unsafeもごく一部だけ使ってます。 今後ドキュメント改善して設定も見直します。
クリス
データベースのベンチマークは便利だけど誤魔化しも生むから注意が必要で、安全性と性能のバランスを取ることが大事だよね。
ハンナ
コードにちょっと変なunsafeの使い方と、役に立たないコメントが多いのが気になる。
ノーラン
boolean値の判定にわざわざmatch使うのは無駄じゃない? 普通にif/elseでいいのに。
レオ
記事ありがとう、fsync問題は知らなかったからメーリングリストを数時間読み漁っちゃったよ。
エマ
それはまさにシュールだね。
サム
なんでこんな変な名前つけたんだろう?
グレース
これってmongodbのフォーク?