web-dev-qa-db-ja.com

SSDはデータベースの有用性を低下させますか

今日はロバートマーティンについてしか聞いていないのですが、彼はソフトウェアの世界で著名な人物のようです。そのため、私のタイトルがクリックベイトや口の中に言葉を入れているように見えるわけではありませんが、これは単に限られた経験と理解で彼から聞いたことをどのように解釈したか。

私は ビデオ を今日(ソフトウェアアーキテクチャに関して)、ロバートC.マーティンの講演で見ていました。ビデオの後半では、データベースのトピックが主な焦点でした。

彼の発言についての私の理解から、彼はSSDがデータベースの有用性を低下させると言っているように見えました(かなり)。

私がこの解釈に至った経緯を説明するには:

彼は、HDD /回転ディスクを使用すると、データの取得がどのように遅くなるかについて説明しました。ただし、最近ではSSDを使用している、と彼は述べた。彼は「RAMが来ています」で始まり、RAMディスクについて言及し続けますが、それを呼び出すことはできないとRAMディスクなので、 RAMとだけ言います。RAMでは、すべてのバイトを取得するのに同じ時間がかかるため、インデックスは必要ありません。(この段落は私が言い換えます

したがって、DBの代わりとしてRAM(コンピューターのメモリのように)を提案することは(私が彼の発言を解釈したとおりです)、すべてのレコードがin-アプリケーションの存続期間中に処理されるメモリ(オンデマンドでディスクファイルからプルする場合を除く)

それで、私はRAMで考えることに頼りました、彼はSSDを意味します。したがって、その場合、SSDはデータベースの有用性を低下させると彼は言っています。 「もし私がOracleだったら怖いだろう。私が存在する理由の根本は蒸発している」と彼は言う。

SSDについての少しの理解から、O(n)シーク時間であるHDDとは異なり(私は思う)、SSDはO(1)に近い、またはほぼランダムです。だから、私はそのようなことを考えたことがないので、彼の提案は私にとって興味深いものでした。数年前に初めてデータベースを紹介されたとき、教授が通常のファイルシステムに対する利点を説明していたとき、データベースの主な役割は、本質的に非常にインデックス化されたファイルシステム(および最適化、キャッシング、同時アクセス)であると結論しました。 etc)、したがって、SSDでインデックスが必要ない場合、この種のことはデータベースの有用性を低下させます。

それにもかかわらず、私が初心者であることを前にして、誰もが純粋なファイルシステムの代わりにDBをアプリケーションの主要ポイントとして使用していて、彼が過度に単純化しているように感じたので、それらがあまり役に立たなくなるとは思えませんデータベースの役割。

:私は最後まで見て、彼が何か違うことを言っていないことを確認しました。

参考までに、 42:22 はデータベーストピック全体が表示されたとき、 43:52 は「データベースがある理由」で始まるときです

これ 答えは、SSDがDBを大幅に高速化すると言っています。 これ 質問は、最適化がどのように変更されるかについて尋ねます。

私の質問のTL; DRに、サーバー市場でのSSDの広範な使用の出現は(今後の予定かすでに発生しているかにかかわらず)データベースの有用性を低下させますか?

発表者が伝えようとしていたことは、SSDを使用すると、データをディスクに保存でき、SSDのように古いHDDのようにデータを取得するのに時間がかかることを心配する必要がないことでした。 O(1)(そう思います)。したがって、それが当てはまる場合、シーク時間を高速化するためのインデックスを持つ利点がなくなったため、それが持つ利点の1つであるインデックス付けを仮想的に失うことになります。

28
Abdul

SSDを使用するときに調整する必要があるデータベースにはいくつかの事項があります。たとえば、PostgreSQLの場合、effective_io_concurrencyrandom_page_costを調整できます。ただし、より高速な読み取りとランダムアクセスは、データベースが行うことではありません。それは確実にします

彼はインデックスについては間違っています。テーブル全体をRAMに読み込むことができる場合でも、インデックスは役に立ちます。信じられない?思考実験をしましょう

  • インデックス付きの列が1つあるテーブルがあるとします。

    CREATE TABLE foobar ( id text PRIMARY KEY );
    
  • そのテーブルに5億行あると想像してください。

  • 5億行すべてが1つのファイルに連結されているとします。

何が速いですか

  1. grep 'keyword' file
  2. SELECT * FROM foobar WHERE id = 'keyword'

データの場所だけでなく、注文方法や実行可能な操作についても重要です。 PostgreSQLは、Bツリー、ハッシュ、Gist、SP-Gist、GIN、およびBRINインデックス(および拡張機能によるBloom)をサポートしています。ランダムアクセスが高速であるため、その数学と機能のすべてがなくなると考えるのはばかげています。

59
Evan Carroll

あなたの投稿に基づいて、RDBMSルックアップ時間最適化がIO時間を無視できるようにするハードウェアに置き換えられていることは明らかです。

これは絶対に本当です。高(実際の)RAM=を組み合わせたデータベースサーバー上のSSDは、IO待機時間を大幅に短縮します。ただし、RDBMSのインデックス作成とキャッシュは、 huge IO boon can and and will will IOボトルネックが原因で、クエリのパフォーマンスが悪いために、インデックスが正しくないために発生します。これは通常、高負荷のアプリケーションまたは不十分なアプリケーションでのみ発生します。

一般にRDBMSシステムの重要な価値は、データの一貫性、データの可用性、およびデータの集約です。 Excelスプレッドシート、csvファイル、または「データベース」を保持するその他の方法を利用しても、保証はありません。

SSDは、何らかの理由(ネットワーク、OSの破損、停電)でプライマリサーバーが使用できなくなることから保護しません。 SSDは、不正なデータ変更からユーザーを保護しません。 SSDは、分析するだけの場合と比較して、分析の実行を高速化しません。

12
Josh Bonello

ボブおじさんはおそらく RedisGemfire などのインメモリデータベースについて話していました。これらのデータベースでは、データベース内のすべてが実際にはRAMに含まれています。データベースは空の状態で始まり、存続期間の短いデータ(キャッシュとして使用される)でファイルされるか、すべてをディスクからロードして、定期的にディスクにチェックポイントの変更をロードすることから始まります。

RAMが安価になり、メモリ内のクラスタ化されたデータベースにテラバイトのデータを格納することが可能になるため、これはますます人気が高まっています。多くのユースケースがあります。 SSDのような高速なディスクではなく、RAMを配置することは、物事への即時アクセスからの速度により、価値があります。理にかなっている場合は、これらのSQLを継続して使用することもできます。

なぜこれがOracleを心配する必要があるのでしょうか。データは増加しており、RDBMSがなくなる可能性は低いです。ただし、長年にわたるOracleのエンジニアリング時間の多くは、回転しているディスク上のデータ検索を非常に高速にする方法に費やされてきました。 Oracleは、まったく異なるストレージ階層に適応する必要があります。 Oracle Database In Memory を使用していますが、以前とは異なる競争にさらされています。クエリオプティマイザーがディスク上のもののレイアウトに基づいて適切な戦略を選択することを確認するためにどれだけの時間が費やされたかを考えてください。

8
Alan Shutko

元々質問コメントとして残された回答を集めたコミュニティWikiの投稿


正反対です。読み取り/書き込み速度が非常に速いため、GPUアクセラレーションデータベース(たとえば、 BlazingDB または Alenka )を取得して、数値をさらに高速に処理できます。これで、さらに複雑なクエリをより高速に実行できます。これで、人々が実行することすら考えないクエリも妥当な速度で実行できるようになりました。より複雑で、より多くのデータはより良いあなたです- cybernard

ボブ・マーティンは長い間存在していて、彼の意見は一般に聞く価値があります(同意しない場合は:-)、この場合、彼は「リレーショナルデータベースの死が私たちにかかっている」群衆に飛び込んでいると思います私は準会員です:-)。 一部の限られた状況下の状況では、非リレーショナルデータベーステクノロジーがEdgeを提供できるという、やや説得力のある議論を行うことができます。ただし、IMOリレーショナルモデルはさまざまな方法で欠陥があるため、今日でも利用できる最も優れた汎用データベースモデルを提供します。 YMMV。 - ボブ・ジャービス

私たちがデータベースを使用する主な理由は、ディスクが遅いからではありません(実際、もともとそれは理由として引用されていましたデータベースを使用するではなく)データが複雑であるため。データベースの主な目的は、複数のアプリ/ユーザーが正しいデータをfindできるようにし、制御された方法でそれを同時に変更できるようにすることです。これをすばやく行うことは、データベースの副次的な目標にすぎません。 - RBarryYoung

RDBMSがすぐになくなることはありません。これらは一部のタイプのアプリケーションに最適であり、NoSQL(Mongoなど)は他のアプリケーションに最適です。コース用の馬。 - sh1rts

データベースはデータの整理に役立ちます。とにかく、そもそもそもそもデータに高速にアクセスできるようには設計されていません。 - JI Xiang

8
Paul White 9