NoSQL とは何ですか? どのように機能しますか? また、どのような利点がありますか? [closed] 質問する

NoSQL とは何ですか? どのように機能しますか? また、どのような利点がありますか? [closed] 質問する

私は NoSQL についていろいろ聞いてきましたが、Web 上では DB のやりとりが速度のボトルネックになることが多いため、NoSQL が最終的には SQL DB ストレージ方法の代わりとなるかもしれない、という話です。

そこでいくつか質問があります。

  1. それは正確には何ですか?

  2. どのように機能しますか?

  3. SQL データベースを使用するよりも優れているのはなぜでしょうか? また、どの程度優れているのでしょうか?

  4. この技術はまだ実装を開始するには新しすぎるのでしょうか、それとも検討する価値があるのでしょうか?

ベストアンサー1

NoSQL というものは存在しません。

NoSQL は流行語です。

数十年にわたり、データベースについて話すとき、人々が意味するのはリレーショナル データベースでした。また、リレーショナル データベースについて話すとき、人々が意味するのは、Edgar F. Codd の構造化クエリ言語で制御するデータベースでした。他の方法でデータを保存するなんて、狂気の沙汰です。それ以外はフラット ファイルにすぎません。

しかし、ここ数年、人々はこの教義に疑問を持ち始めました。行と列を持つ表が本当にデータを表す唯一の方法なのだろうかと疑問に思うようになったのです。人々は考え、コーディングを始め、データをどのように整理するかについて多くの新しい概念を思いつきました。そして、データを扱う新しい方法のために設計された新しいデータベース システムを作り始めました。

これらすべてのデータベースの哲学は異なっていました。しかし、これらすべてのデータベースに共通していたのは、構造化クエリ言語がもはやそれらを使用するのに適さなくなったことです。そのため、各データベースは SQL を独自のクエリ言語に置き換えました。こうして、従来のリレーショナル データベース モデルに反するすべてのデータベース テクノロジを表すラベルとして、NoSQL という用語が生まれました。

では、NoSQL データベースの共通点は何でしょうか?

実のところ、大したことはないです。

次のようなフレーズをよく耳にします。

  • NoSQL はスケーラブルです!
  • NoSQL は BigData 向けです!
  • NoSQL は ACID に違反します。
  • NoSQL は、優れたキー/値ストアです。

それは本当でしょうか? まあ、これらの記述の一部は、一般的に NoSQL と呼ばれるデータベースには当てはまるかもしれませんが、どれも少なくとも他の 1 つのデータベースには当てはまりません。実際、NoSQL データベースに共通しているのは、SQL を使用しないデータベースであるということだけです。それだけです。これらを定義する唯一のものは、これらを互いに区別するものです。

では、NoSQL データベースの特徴は何でしょうか?

そこで、一般的に NoSQL と呼ばれるデータベースは、すべてあまりにも異なるため、まとめて評価することはできないことを明らかにしました。特定の問題を解決するのに適しているかどうかを判断するには、それぞれを個別に評価する必要があります。しかし、どこから始めればよいでしょうか。ありがたいことに、NoSQL データベースは、さまざまなユースケースに適した特定のカテゴリにグループ化できます。

ドキュメント指向

例: MongoDB、CouchDB

強み: 異種データ、オブジェクト指向の作業、アジャイル開発

これらの利点は、一貫したデータ構造を必要としないことです。要件、つまりデータベース レイアウトが頻繁に変更される場合や、同じカテゴリに属していても見た目が大きく異なるデータセットを扱う場合に役立ちます。「キー」と「値」という 2 つの列を持つテーブルが多数ある場合は、これらを検討する価値があるかもしれません。

グラフデータベース

例: Neo4j、GiraffeDB。

強み: データマイニング

ほとんどの NoSQL データベースはデータ関係を管理するという概念を放棄していますが、これらのデータベースは、いわゆるリレーショナル データベースよりもさらにその概念を取り入れています。

これらのツールの焦点は、他のデータとの関係によってデータを定義することです。他の 2 つのテーブルの主キーである主キーを持つテーブルが多数ある場合 (およびそれらの間の関係を説明するデータがある場合)、これらのツールが役立つ可能性があります。

キーバリューストア

例: Redis、Cassandra、MemcacheDB

Strengths: Fast lookup of values by known keys

They are very simplistic, but that makes them fast and easy to use. When you have no need for stored procedures, constraints, triggers and all those advanced database features and you just want fast storage and retrieval of your data, then those are for you.

Unfortunately they assume that you know exactly what you are looking for. You need the profile of User157641? No problem, will only take microseconds. But what when you want the names of all users who are aged between 16 and 24, have "waffles" as their favorite food and logged in in the last 24 hours? Tough luck. When you don't have a definite and unique key for a specific result, you can't get it out of your K-V store that easily.

Is SQL obsolete?

Some NoSQL proponents claim that their favorite NoSQL database is the new way of doing things, and SQL is a thing of the past.

Are they right?

No, of course they aren't. While there are problems SQL isn't suitable for, it still got its strengths. Lots of data models are simply best represented as a collection of tables which reference each other. Especially because most database programmers were trained for decades to think of data in a relational way, and trying to press this mindset onto a new technology which wasn't made for it rarely ends well.

NoSQL databases aren't a replacement for SQL - they are an alternative.

Most software ecosystems around the different NoSQL databases aren't as mature yet. While there are advances, you still haven't got supplemental tools which are as mature and powerful as those available for popular SQL databases.

Also, there is much more know-how for SQL around. Generations of computer scientists have spent decades of their careers into research focusing on relational databases, and it shows: The literature written about SQL databases and relational data modelling, both practical and theoretical, could fill multiple libraries full of books. How to build a relational database for your data is a topic so well-researched it's hard to find a corner case where there isn't a generally accepted by-the-book best practice.

Most NoSQL databases, on the other hand, are still in their infancy. We are still figuring out the best way to use them.

おすすめ記事