パスワードを忘れた? アカウント作成
4524158 story
データベース

「世界最速」をうたう SQL データベース「MemSQL」 47

ストーリー by reo
中身は特許の塊 部門より

hylom 曰く、

元 Facebook の開発者が開発した SQL データベース「MemSQL」が、「世界最速」をアピールしている (本家 /. 記事より) 。

MemSQL は MySQL 互換でありながら、データの読み書きを「信じられないスピード」で実行できるという。MemSQL を紹介するビデオでは、MySQL と MemSQL で同様のクエリを実行してその速度の違いを見せているが、たとえば MySQL で毎秒 3,500 回実行できるクエリを MemSQL で実行すると、毎秒 80,000 回も実行できるという。

MemSQL はデータをメモリ内に配置し、SQL 文を最適化された C++ コードに変換して実行することで高速化を計っているそうだ。そのほか、さまざまな最適化も行われているという。オープンソースではないようだが、10 GB までの容量制限がある「Developer Edition」は無料で利用できるようだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2012年06月26日 11時53分 (#2180829)

    本家記事の末尾
    「The documentation says that MemSQL writes back to disk/SSD as soon as the transaction is acknowledged in memory,
      and that using a combination of write-ahead logging and snapshotting ensures your data is secure.
      There is a free version but so far how much a full version will cost isn't given.」
    も入れとかないと、そういうコメントだらけになりそうですよ。

    名前に反して、ちゃんとディスクに書き込むしデータ保護もしている。
    フルバージョンの値段は未公開。

    • by Anonymous Coward

      要するに一言で言うと、SQLコンパイラ?

      • オンメモリDBMS+SQL コンパイラ、かな。他ののオンメモリRDBよりSQLをC++にトランスレートしてるぶんさらに速いよと。
        親コメント
      • by Anonymous Coward

        違うよ。
        データはメモリ上に持つけれど、トランザクションはちゃんと保証されるってことでしょう。

        つまり元コメの
        >ちゃんとディスクに書き込むしデータ保護もしている。
        がすでに一言で言っています。

        どう読んで「SQLコンパイラ」なんて言葉が出てきたのだ?

        • by Anonymous Coward

          こういうタイプの作りだと、OSが死んだときに、SSDに書き込めてないデータが消えそうなんですけど
          その辺はどうしてるんでしょうかね。

          • combination of write-ahead logging and snapshotting をやってるから大丈夫ってリンク先に書いてありますね。 スナップショットに巻き戻して、それからログを喰わせて消えたトランザクションの再実行をするってことかな?
            親コメント
          • by Anonymous Coward

            普通のDBでもOSが死んだりしてcommitできなければ
            消えるのは当たり前。

            • by Anonymous Coward
              普通のOSのシステムコールであればDISKに書き込んでからが結果を返すのでそんな心配は無用です。
              Linuxはそのあたりの実装がいい加減だったそうですが、今もそうかな?
              commitできないなんてのはアプリレベルの話です。
              • by Anonymous Coward

                OSはディスクに書き込んだつもりでもHDDのキャッシュに乗っただけとか

              • そうです。syncオプションつけてmountしているときでもバッファキャッシュに書き込んだだけでwriteシステムコールがリターンしてしまうとか。かなり昔のlinuxでの話。

                HDDの制御基板のキャッシュに関しては、電源OFFの際にもコンデンサにたまってる電荷で稼働できる最後の数10msで書き込んでくれるんじゃなかったっけ?

                親コメント
              • by Anonymous Coward

                それでも問題ないでしょ?

              • by Anonymous Coward

                っていうか、OSが落ちただけなら全然問題無いよね。

        • by Anonymous Coward

          > どう読んで「SQLコンパイラ」なんて言葉が出てきたのだ?
          「SQL 文を最適化された C++ コードに変換して」の辺り。

          というか、どう読んでデータの置き場所やトランザクションの話が出てきたのだ?

          • by Anonymous Coward

            「The documentation says that MemSQL writes back to disk/SSD as soon as the transaction is acknowledged in memory,
                  and that using a combination of write-ahead logging and snapshotting ensures your data is secure.
                  There is a free version but so far how much a full version will cost isn't given.」

            のどこに
            「SQL 文を最適化された C++ コードに変換して」
            って書いてあるんだ?

            • by Anonymous Coward

              落ち着いてタレコミ文から全部読み直すといいと思う

              • by Anonymous Coward

                わざわざこのスレッドにぶら下げるいいわけにはならないなあ。

            • by Anonymous Coward

              そう書いてあるからには、I/Oをサボって(手抜きをして)高速化してるわけじゃないんだな、と思ったわけよ。
              とすると、タレコミにある「変換して」の部分がキモかな、と思ったわけよ。

              なんかおかしい?
              原理を正しく見抜いているかではなく、話の進め方が。

              • おおまかな話の流れとしては理解できるんだけど、

                SQL 文を最適化された C++ コードに変換して実行することで高速化を計っている

                は誤訳というか前後が逆ですね。
                「実行速度の最適化のために、SQLをC++コードに変換している」のであって、
                「最適化されたC++コードに変換している」わけではないでしょう。手段と目的が逆。

                データベースのデータを全部オンメモリにすれば格段に高速化できる。
                でも、検索処理における個々のレコードについての条件比較で、SQLをインタプリタ実行していては無駄。
                こういう場合の処理の定番は「JITコンパイル」ですね。比較処理部をネイティブコードにすればいい。
                で、そのコンパイル手段として、SQL→C++のトランスレータにしているということなのでしょう。

                自前でSQLをネイティブコードに落とすコンパイラを作るのが一番でしょうけど、そうするのはかなり難易度が高いでしょう。
                それに比べると、
                SQLのデータ型をC++のクラスに対応させられれば、SQL→C++は比較的簡単に変換できると思います。

                単にネイティブコードになるだけでも格段に速くなるでしょうし、
                C++コンパイラの最適化の恩恵によってさらなく高速化も期待できます。

                #SQLの文字列比較が、C++のクラスオブジェクトの比較を経由して、コンパイラビルトインのstrcmpになるとか、そんな感じ。

                親コメント
  • by Anonymous Coward on 2012年06月26日 12時29分 (#2180869)

    情報不足と、自分の知識不足で、
    本当に世界最速だと判断できません。

    どうなんでしょう?

    http://www.kousokuya.co.jp/ [kousokuya.co.jp]
    以前は、こっちが世界最速を歌っていたような?

    • by bero (5057) on 2012年06月26日 13時06分 (#2180914) 日記

      801 名前: 最低人類0号 [sage] 投稿日: 2005/11/08(火) 19:30:12 ID:xbTMS0+y
        全米(公開初日の売り上げが年間で)No.1の大ヒット
        全米(最初の一週間の売り上げが年間で)No.1の大ヒット
        全米(最初の一ヶ月の売り上げが年間で)No.1の大ヒット
        全米(公開期間の全売り上げが年間で)No.1の大ヒット
        全米(公開期間の平均売り上げが年間で)No.1の大ヒット

        全米(公開初日の観客動員数が年間で)No.1の大ヒット
        全米(最初の一週間の観客動員数が年間で)No.1の大ヒット
        全米(最初の一ヶ月の観客動員数が年間で)No.1の大ヒット
        全米(公開期間の全観客動員数が年間で)No.1の大ヒット
        全米(公開期間の平均観客動員数が年間で)No.1の大ヒット

        No.1の大ヒットだらけ

      親コメント
      • Re:世界最速? (スコア:4, おもしろおかしい)

        by Anonymous Coward on 2012年06月26日 13時18分 (#2180922)

        全米ってすぐに泣くから信用できない。

        親コメント
        • by Anonymous Coward

          「全米が震撼した」もよく聞くし,日本を超える地震大国なのは間違いない.

          • by Anonymous Coward

            震撼のカンって感動のカンと違うんですね。
            今、はじめて気付きました。
            なんか付いてるって。

            • by Anonymous Coward

              手で感じさせられるなんてなんかエロい。。。

    • by Anonymous Coward

      それでは聞いてください。MemSQLで、「世界最速」

    • by Anonymous Coward

      世界最速のスーパーコンピュータに採用されたモノが最速の座を掴むのだ

      あとF1の制御系に採用されたりとかロケットに採用されたりとか

      • by Anonymous Coward
        マクラーレンホンダ全盛期のECUはNEC(当時)製の16bit MCUだったりします。
    • by Anonymous Coward

      でもきっと一番速いのは、ガンガンガン速。きっと。

    • by Anonymous Coward

      世界最速コンソーシアムというのを立ち上げるのはどうでしょうか?

      会員企業から会費を徴収しつつ、会員企業からの申請に対して世界最速を認定してあげるのです。
      どうやって世界最速評価するかですか?
      認定するだけです、評価なんかしません。

  • by Anonymous Coward on 2012年06月26日 13時44分 (#2180948)

    速度を追求というなら、SQLをインターフェース言語として使う理由がないし、ネットワークポートを経由してデータを受け取る理由もないと思います。

  • by Anonymous Coward on 2012年06月26日 14時50分 (#2181011)

    オンメモリDBというと東証売買 システム (arrowhead )を思い出す。
    確かプログラム取引用のAPIだと32マイクロ秒で株価問い合わせクエリーの実行ができるという話だったかなあ。
    まあ、ハードも違うし、多重度も違うし、規模も違うから、単純な比較はできないけどね。

    • by Anonymous Coward

      クエリーにかかる時間と
      単位時間あたり何クエリー捌けるか
      も全然単位が違うから比較できないね。

  • by Anonymous Coward on 2012年06月26日 22時30分 (#2181346)

    「元 Facebook の開発者」というのは 「過去にFacebook の開発を行ったが現在は行っていないので開発者ではない」という意味かな。
    単に「Facebook の開発者」というのとはニュアンスが違うのかな。

    • by Anonymous Coward

      ほかにも区切り方はあるな。

      「元Facebook」の開発者(昔Facebookに在籍してた。そこでの開発の経験は問わない)
      元「Facebook の開発者が開発したSQL データベース」(Faceboookの開発者が開発したSQLデータベースを出発点とするソフトウェア)

      とか。

    • by Anonymous Coward

      最近はスラドにも日本語がわからない人がちょくちょく来ているみたいだな。

    • by Anonymous Coward

      「元ノーベル賞受賞者」みたいな表現だといっているんでしょう

      • スラドでよくある胡乱な指摘方法でしょう。一般的に言い直すと、「『元 Facebook の開発者』ではなくて『Facebook の元開発者』じゃないの?」ってことかと。
        --
        LIVE-GON(リベゴン)
        親コメント
        • by Anonymous Coward

          いちいちそういう指摘をしないといけないと思っているあたり、日本語ネイティブではないっぽいですね

          • いちいちそういう指摘をしないといけないと思っているあたり、日本語ネイティブではないっぽいですね

            どっちかというと個人の性格によるんじゃないでしょうか。あと、細かい指摘をするのはどっちかというとネイティブの方だと思うけど。それも頑固系の。

            #正しい言葉遣いの指摘を「頑固」でくくるのも抵抗があるが。

            --
            LIVE-GON(リベゴン)
            親コメント
typodupeerror

人生unstable -- あるハッカー

読み込み中...