9

非リレーショナルデータベース(キーと値のペアのストレージなど)の利点は、大規模なデータセット(google、facebook、linkedin)で使用した場合に明らかです。中小規模のアプリケーションは、非リレーショナルデータベースを使用することでどのようにメリットがあると思いますか?

4

7 に答える 7

6

IBMメインフレームには、60年代から「非リレーショナル」データベース(IMS +バリアントなどの階層データベース)があります。これらのデータベースは、非常に高速で大規模な処理を適切に実行できるため、現在も使用されています。

リレーショナルデータベースのポイントは、データを格納および取得するための通常の比較的抽象的な方法を提供することでした。この方法では、データモデルとは比較的独立してチューニングを実行できます(IMSには当てはまりません)。これらは、階層データベースを簡単に再編成できないことに対応して設計されました。良い面は素晴らしい組織です。欠点は中程度であり、高性能ではありません。

Googleは、スケールを処理するためのスケーラブルなストレージとMapReduceを提供しています。リレーショナルではありません。

XMLは暗黙的に階層的であるため、過去10年間の初めに、本質的に階層形式でデータをXMLに格納するという大きな推進力がありました。階層型データベースの不便さを繰り返したが、パフォーマンスがまったくなかったため、これはIMHOの大きな間違いでした。私はこの動きがほとんど死んだように見えることにそれほど驚いていません。

非リレーショナルへの実際的な推進のほとんどは、パフォーマンスと規模に向けられているように思われます。これが「小さな」アプリケーションにどのように役立つかはわかりません。

人々は、知識ベースのスキームを使用して多くの実用的なデータ管理を提案しましたが、実行していません。ダグラス・レナートのCYCがここで思い浮かびます。アプリケーションが非自明な結論を引き出すのを支援するデータベースの機能は、「スマート」にしようとしている「小さな」アプリケーションにとって非常に興味深いものです。しかし、これらはまだ多くありません。

于 2010-03-01T16:45:29.210 に答える
2

その規模でNoSQLデータベースを使用する場合のスイートスポットは、データベースモデル(Key-Value、ドキュメントなど)がアプリケーションのニーズによく一致し、高度なリレーショナル機能が必要ない場合です。

スペクトルの小さな端では、ほぼすべてが高速であるため、パフォーマンスは問題になりません。ストレージエンジンは問題ではありません。高度なクエリエンジンが必要ない場合は、SQLサポートの欠如は問題ではありません。

あなたはそれがどれほどうまくフィットし、どれほど使いやすいかを残されています。正直なところ、ツールは問題になります。リレーショナルデータベースツールは成熟しており、NoSQLツールは機能が豊富ではなく、戦いが厳しくなりません。多くの場合、それは独自のツールです。どのツールをあきらめるのか、どれだけ必要なのかを確実に検討してください。

製品と比較して、NoSQLサービス(AmazonSimpleDBやMicrosoftAzureなど)を検討する場合、小規模なプロジェクトには追加の利点があります。使用した分だけ支払う必要があり、あまり使用しない場合は、専用サーバーを実行するよりも安価で、SimpleDBの無料使用階層などを無料で利用できます。

また、サーバーとデータベースのメンテナンスコストの一部を回避できます。DBAがない場合、またはDBAがすでに過剰に機能している場合、これは大きなメリットになる可能性があります。もちろん、管理者の作業は引き続き必要ですが、大幅に削減され、通常は簡単になります。

于 2010-03-01T17:28:14.610 に答える
1

グラフデータベース(Neo4j-私が関わっているプロジェクトなど)に関しては、複雑さへのスケーリングに優れています。つまり、これらは「ビジネスドメインをモデル化するためのより優れた基盤」を提供します(同じくBenScofieldによるTheState of NoSQLも参照してください)。私が見ているように、これは中小規模のアプリでは非常に重要です。

これは例を通してよりよく説明されるかもしれないので、ここにサンプルアプリ/ドメインモデリングへのいくつかのリンクがあります:

于 2010-03-01T19:47:13.280 に答える
0

RDBMSの問題の1つは、プログラミング言語のドメインモデルをRDBMSのリレーショナルスキーマにマッピングするために労力を費やす必要があることです。この作業は通常、ORMレイヤーの構成に費やされます。

NoSQLデータベースを使用すると、オブジェクトをリレーショナルモデルにマップする必要がなく、ほとんどの場合、オブジェクトはそのままシリアル化されます。中間スキーマがないため、データの移行とバージョン管理が簡単になります。

もう1つの利点は、スケーラビリティとパフォーマンスです。ほとんどの場合、データは「キー」によって受信されるため、事実上すべてが使用され、インデックスが作成されます。簡単なシャーディングは、シャーディングに不可欠な自然なデータパーティショニングを提供する利用可能なNoSQLインスタンスの数に対してキーに対して%(MOD)を実行することで可能です。

NoSQLを使用した開発がRDBMSとどのように異なるかを知りたい場合は、Redisを使用して簡単なブログアプリケーションを設計する方法を示すチュートリアルがあります。

于 2010-09-11T15:46:15.743 に答える
0

質問にはおそらくもう少しコンテキストが必要です...Python環境を想定して、y_serialプロジェクトのチュートリアルを検討してください:http://yserial.sourceforge.net/

NoSQLは、スケーラビリティの理由から単に採用されているわけではありません。(任意のPythonオブジェクトの)シリアル化と永続性は、あらゆる規模で非常に便利です。したがって、キー値システムを1つのアプローチと見なしてください。

于 2010-03-20T19:41:37.197 に答える
0

Key-Valueストア、BLOBストア、メッセージキューストアなどのいくつかの一般的なPaaSクラウドサービスを組み合わせると、小規模なアプリケーション開発者をDBAやインフラストラクチャの人々の専制政治から解放できる便利なツールがいくつかあります。

今日、小規模な開発者はしばしばJetMDBに頼っています。なんで?簡単な共有アクセスは、アプリケーションコミュニティ全体に表示されるファイル共有にMDBファイルを保存するのと同じくらい簡単です。彼らがそれを回避できるとき(つまり、ゲートキーパーから必要なサポートを受けることができるとき)、SQL Server Express、MySQLなどを使用する可能性があります。

悲しいことに、これらのゲートキーパーは、大規模な組織で対処するのにかなり敵対的である可能性があります。「データベース」に言及すると、突然DBAギャングとそれに関連する遅延、アプリケーションレビュー、優先順位付けなどに直面します。サーバーが必要であると言及すると、他の銃殺隊に直面します。

RDBMSが必要ない場合は、NoSQLソリューションと関連するクラウドサービスを使用することで、これを大量に排除できます。

一つには、本当に必要なのはパブリッククラウドプロバイダーのアカウントだけです。これは、コンセプトが承認されるとかなり簡単になります。もちろん、通常の簿記の問題もありますが、承認されてアカウントが割り当てられると、開発者としては簡単になります。

しかし、それも脇に置いておきましょう。組織がそのような用途のためにプライベートクラウドを実装した場合はどうなりますか?外部請求の問題の多くがなくなり、データの不安定さの心配がなくなります。

このようなことは、ファイル共有を管理するのとほぼ同じくらい簡単に、半匿名で実装およびプロビジョニングできます。匿名性がもたらされるのは、社内クラウドでの開発が承認されると、既存のファイル共有にファイルを作成する前に、リクエストを調べる必要がある以上に、それを使用してアクティビティの詳細を選択する必要がなくなるためです。 。

明らかに、管理するストレージとCPUのクォータがあります。誰もが無期限にスケールアップし続ける余裕はありません。不正なアプリケーションは、大量のリソースを消費する可能性があります。したがって、必要なのは、使用量を制限するためのある種のクォータシステムです。これがインフラストラクチャの担当者によって監視されるかどうかは、実装の決定であるか、ファイル共有の使用と同じように扱われる可能性があります。不足すると、誰かがプログラマーに怒鳴り、プログラマーはそれを調べて、必要に応じてさらに要求します(またはバグを修正します)。

しかし、最終的には「ユーティリティコンピューティング」になり、「SQLを使用しない」ことで、DBAを処理するためのコスト(および問題)が発生しなくなります。あなたが仕事をしている間、彼らはまだ彼らの大きなオフィスで静かにウェブサーフィンをしていることができます。

于 2013-10-31T09:45:22.403 に答える
0

Amazon SimpleDBは、より小さな非構造データを保存するために非リレーショナルデータベースを必要とする人に役立ちます。Amazon SimpleDBは、ストレージサイズをドメインあたり10GBに制限しています。Amazon SimpleDBは、シンプルさと柔軟性を提供します。SimpleDBは、すべてのデータに自動的にインデックスを付けます。Amazon SimpleDBの料金は、実際のボックスの使用量に基づいています。UTF-8文字列データはAmazonSimpleDBに保存できます。

于 2013-11-01T05:26:09.707 に答える