キーテイクアウト
- SQLデータベースは、明確に定義された関連データ要件とデータの整合性が重要なプロジェクトに最適です。それらは多くの場合、オンラインストアや銀行システムに使用されます。 NOSQLデータベースは、速度とスケーラビリティが重要な場合、無関係、進化、または不確定なデータ要件を持つプロジェクトに適しています。それらは一般的にソーシャルネットワーク、顧客管理、Web分析システムに使用されます。 NOSQLデータベースは、データストレージの柔軟性を提供し、フィールドを自由に追加または削除できるようにします。個人に関するすべてのデータを単一のドキュメントに保存し、データの取得とフルテキスト検索をより簡単にします。ただし、データの整合性ルールを実装したり、複数のドキュメントでトランザクションをサポートしたりしません。
- SQLデータベースは、倉庫管理システムのような堅牢なデータの整合性とトランザクションサポートを必要とするプロジェクトに必要です。関連データをテーブルに保存し、使用する前にスキーマが必要であり、サポートテーブル結合が必要です。ただし、スキーマは剛性が高く、データが断片化される可能性があるため、開発者やシステム管理者がデータベースを調べることが困難になります。 前の記事では、SQLデータベースとNOSQLデータベースの主な違いについて説明しました。このフォローアップでは、特定のシナリオに知識を適用し、最適なオプションを決定します。 要約する: SQLデータベース:
- テーブルに関連データを保存します
- 使用前にテーブルを定義するスキーマが必要です
- データの冗長性を減らすための正規化を奨励します
- サポートテーブルが結合して、単一のコマンドで複数のテーブルから関連データを取得
- データの整合性ルールを実装
- トランザクションを提供して、2つ以上のアップデートが成功するか、原子ユニットとして失敗することを保証します
- は(ある程度の努力を払って)拡大することができます
- 強力な宣言言語を使用して を照会します
- 多くのサポート、専門知識、ツールを提供しています NOSQLデータベース:
- JSONのように関連するデータ、name-valueドキュメント
- スキーマを指定せずにデータを保存できます
- 結合を必要としないでください(非正規化された文書が使用されると仮定)
- 検証なしでいつでもデータをどこにでも保存することを許可します
- 単一のドキュメントへの更新を保証しますが、複数のドキュメントではありません
- 優れたパフォーマンスとスケーラビリティを提供します
- jsonデータオブジェクトを使用してクエリ を使用します
- は、より新しい、エキサイティングなテクノロジーです。
- SQLはデジタルです。正確な仕様を備えた明確に定義された個別のアイテムに最適です。典型的なユースケースは、オンラインストアと銀行システムです nosqlはアナログです。流体要件を備えた有機データに最適です。典型的なユースケースは、ソーシャルネットワーク、顧客管理、Web分析システムです。
- 正確なプロジェクトはほとんどありません。どちらのオプションも、浅いまたは自然に非正規化されたデータがある場合、どちらのオプションが実行可能になる可能性があります。ただし、これらの単純化された例のシナリオは、一般化を整えていることに注意してください。あなたは私よりもあなたのプロジェクトについて多くを知っています、そして、私はそれがかなりの利点を提供しない限り、SQLからNOSQLまたはその逆に切り替えることをお勧めしません。それはあなたの選択です。プロジェクトの開始時の長所と短所を考えてみてください。 シナリオ1:連絡先リスト
id
- タイトル
- firstName
- lastName
- 性別
- 電話
- メール
- address1
- address2
- address3
- city
- region
- zipcode
- 国
- 問題1:
- name (ランドライン、ワークモバイルなどなどのテキスト)
- 番号
- 問題2:
- name (ホームメール、ワークメールなどなどのテキスト)
- アドレス
- 問題3:
- name (自宅、オフィスなどのテキスト)
- address1
- address2
- address3
- city
- region
- zipcode
- 国
- 元の連絡先テーブルは次のように削減されました。
- タイトル
- firstName
- lastName
- 性別
当社の連絡先データは人々に関係しています。それらは予測不可能であり、異なる時間に異なる要件を持っています。連絡先リストは、NOSQLデータベースを使用することで利益を得ます。NOSQLデータベースは、連絡先コレクションの単一のドキュメントに個人に関するすべてのデータを保存します。
この例では、連絡先のタイトルや性別を保存していません。他の人に適用する必要のないデータを追加しました。それは問題ではありません - 私たちのNOSQLデータベースは気にしません。そして、私たちは自由にフィールドを追加または削除することができます。 連絡先のデータは単一のドキュメントに含まれているため、単一のクエリを使用して一部またはすべての情報を取得できます。フルテキスト検索も簡単です。 Mongodbでは、すべての連絡先のインデックスを定義できます 使用したテキストフィールド:<span>{ </span> <span>name: [ </span> <span>"Billy", "Bob", "Jones" </span> <span>], </span> <span>company: "Fake Goods Corp", </span> <span>jobtitle: "Vice President of Data Management", </span> <span>telephone: { </span> <span>home: "0123456789", </span> <span>mobile: "9876543210", </span> <span>work: "2244668800" </span> <span>}, </span> <span>email: { </span> <span>personal: "bob@myhomeemail.net", </span> <span>work: "bob@myworkemail.com" </span> <span>}, </span> <span>address: { </span> <span>home: { </span> <span>line1: "10 Non-Existent Street", </span> <span>city: "Nowhere", </span> <span>country: "Australia" </span> <span>} </span> <span>}, </span> <span>birthdate: <span>ISODate</span>("1980-01-01T00:00:00.000Z"), </span> <span>twitter: '@bobsfakeaccount', </span> <span>note: "Don't trust this guy", </span> <span>weight: "200lb", </span> <span>photo: "52e86ad749e0b817d25c8892.jpg" </span><span>}</span>次に、以下を使用してフルテキスト検索を実行します。
db<span>.contact.createIndex({ "$**": "text" });</span>
db<span>.contact.find({ </span> <span>$text: { $search: "something" } </span><span>});</span>シナリオ2:ソーシャルネットワーク
ソーシャルネットワークは同様の連絡先データストアを使用する場合がありますが、関係リンク、ステータスの更新、メッセージ、「いいね」などのオプションを備えた機能セットで拡張されます。これらの施設は、ユーザーの需要に応じて実装され、ドロップされる場合があります。それらがどのように進化するかを予測することは不可能です。 加えて:
- ほとんどのデータアップデートには、単一の原点があります:ユーザー。いつでも2つ以上のレコードを更新する必要があるため、トランザクションのような機能は必要ありません。
- 一部のユーザーが考えるものにもかかわらず、ステータスの更新に失敗すると、グローバルなメルトダウンや財政的損失が発生する可能性は低いです。アプリケーションのインターフェイスとパフォーマンスは、堅牢なデータの整合性よりも優先度が高くなります。 NoSQLは良いフィット感のようです。データベースを使用すると、さまざまな種類のデータを保存する機能をすばやく実装できます。たとえば、すべてのユーザーの日付のステータス更新は、ステータスコレクションの単一のドキュメントに配置できます。
<span>{ </span> <span>name: [ </span> <span>"Billy", "Bob", "Jones" </span> <span>], </span> <span>company: "Fake Goods Corp", </span> <span>jobtitle: "Vice President of Data Management", </span> <span>telephone: { </span> <span>home: "0123456789", </span> <span>mobile: "9876543210", </span> <span>work: "2244668800" </span> <span>}, </span> <span>email: { </span> <span>personal: "bob@myhomeemail.net", </span> <span>work: "bob@myworkemail.com" </span> <span>}, </span> <span>address: { </span> <span>home: { </span> <span>line1: "10 Non-Existent Street", </span> <span>city: "Nowhere", </span> <span>country: "Australia" </span> <span>} </span> <span>}, </span> <span>birthdate: <span>ISODate</span>("1980-01-01T00:00:00.000Z"), </span> <span>twitter: '@bobsfakeaccount', </span> <span>note: "Don't trust this guy", </span> <span>weight: "200lb", </span> <span>photo: "52e86ad749e0b817d25c8892.jpg" </span><span>}</span>シナリオ3:ウェアハウス管理システム
倉庫を監視するシステムを検討してください。記録する必要があります:
- 倉庫に到着し、特定の場所に割り当てられている製品/湾
- 倉庫内の商品の動き、例えば同じ製品が隣接する場所にあるように在庫を並べ替える
- 注文とその後の配達のための倉庫からの製品の削除。
- 私たちのデータ要件:
- ボックス数量、寸法、色などの一般的な製品情報は保存できますが、識別して適用できる個別のデータです。ラップトッププロセッサの速度やスマートフォンの推定バッテリー寿命など、詳細に関心がある可能性は低いです。
- 間違いを最小限に抑えることが不可欠です。製品が消えたり、異なる製品が既に保管されている場所に移動することはできません。 最も単純な形式では、ある物理領域から別の領域へのアイテムの転送を記録するか、ロケーションAから削除して場所Bに配置します。これは同じアクションの2つの更新です。
自分自身を公開!
これらのシナリオが役立つことを願っていますが、すべてのプロジェクトは異なり、最終的には独自の決定を下す必要があります。 (しかし、私たちの開発者は、彼らがどれほど優れているかに関係なく、私たちの技術的な選択を正当化することに熟達しています!) 最良のアドバイス:できるだけ多くのテクノロジーに自分自身をさらしてください。その知識により、SQLまたはNOSQLに関して理性的かつ感情的に公平な判断を下すことができます。幸運を祈ります。 SQL対noSQLに関するよくある質問(FAQ)
SQLおよびNOSQLデータベースはいくつかの点で異なります。 SQLデータベースはリレーショナルです。つまり、テーブルと行でデータを編成します。データを定義および操作するために、構造化クエリ言語(SQL)を使用します。一方、NOSQLデータベースは非関連性であり、ドキュメントベース、列ベース、グラフベース、またはキー価値ペアのいくつかの方法でデータを保存できます。これらは、分散データの大規模なセットを使用するのに特に役立ちます。最大の重要性。また、複雑なクエリを実行する必要がある場合にも有益です。 SQLデータベースは酸に準拠しています。信頼できるトランザクションが確保されます。時間の経過とともに不明確または変更されています。柔軟性、スケーラビリティ、速度を提供するため、リアルタイムアプリケーションとビッグデータに適した選択肢になります。同じプロジェクトに共存できます。これは、ポリグロット持続アーキテクチャとして知られています。データベースの選択は、アプリケーションの各部分の特定の要件に依存します。
人気のあるSQLおよびNOSQLデータベースは何ですか?一般的なSQLデータベースには、MySQL、Oracle、PostgreSQLが含まれます。人気のNOSQLデータベースには、MongoDB、Cassandra、およびRedisが含まれます。テーブルと関係。 NOSQLデータベースでは、NOSQLデータベースのタイプに応じて、データモデリングをさまざまな方法で実行できます。ドキュメント、キー値、列、またはグラフ。 > SQLデータベースは通常、より強力なハードウェアを追加することで垂直にスケーリングしますが、NOSQLデータベースはより多くのサーバーを追加することで水平方向にスケーリングしますトラフィック。 cap定理とは何ですか?sqlとnosqlにどのように適用されますか?
cap定理は、分散データストアが同時に次の3つの保証のうち2つ以上を提供することは不可能であると述べています:一貫性、可用性、およびパーティション許容度。 SQLデータベースは一貫性と可用性を優先しますが、NOSQLデータベースは可用性とパーティション許容度を優先します。トランザクション用。一方、NOSQLデータベースは、通常、すべての酸性特性を提供しません。代わりに、彼らはベース(基本的に利用可能、ソフトステート、最終的に一貫性のある)モデルに焦点を当てています。複雑なクエリを必要とする会計システムやシステムなどの行取引。 NOSQLデータベースは、コンテンツ管理システム、リアルタイム分析、IoTアプリケーションのように、大量のデータを処理し、水平方向にスケーリングする必要があるアプリケーションに最適です。
SQLおよびNOSQLデータベースはいくつかの点で異なります。 SQLデータベースはリレーショナルです。つまり、テーブルと行でデータを編成します。データを定義および操作するために、構造化クエリ言語(SQL)を使用します。一方、NOSQLデータベースは非関連性であり、ドキュメントベース、列ベース、グラフベース、またはキー価値ペアのいくつかの方法でデータを保存できます。これらは、分散データの大規模なセットを使用するのに特に役立ちます。最大の重要性。また、複雑なクエリを実行する必要がある場合にも有益です。 SQLデータベースは酸に準拠しています。信頼できるトランザクションが確保されます。時間の経過とともに不明確または変更されています。柔軟性、スケーラビリティ、速度を提供するため、リアルタイムアプリケーションとビッグデータに適した選択肢になります。同じプロジェクトに共存できます。これは、ポリグロット持続アーキテクチャとして知られています。データベースの選択は、アプリケーションの各部分の特定の要件に依存します。
人気のあるSQLおよびNOSQLデータベースは何ですか?一般的なSQLデータベースには、MySQL、Oracle、PostgreSQLが含まれます。人気のNOSQLデータベースには、MongoDB、Cassandra、およびRedisが含まれます。テーブルと関係。 NOSQLデータベースでは、NOSQLデータベースのタイプに応じて、データモデリングをさまざまな方法で実行できます。ドキュメント、キー値、列、またはグラフ。 > SQLデータベースは通常、より強力なハードウェアを追加することで垂直にスケーリングしますが、NOSQLデータベースはより多くのサーバーを追加することで水平方向にスケーリングしますトラフィック。 cap定理とは何ですか?sqlとnosqlにどのように適用されますか?
cap定理は、分散データストアが同時に次の3つの保証のうち2つ以上を提供することは不可能であると述べています:一貫性、可用性、およびパーティション許容度。 SQLデータベースは一貫性と可用性を優先しますが、NOSQLデータベースは可用性とパーティション許容度を優先します。トランザクション用。一方、NOSQLデータベースは、通常、すべての酸性特性を提供しません。代わりに、彼らはベース(基本的に利用可能、ソフトステート、最終的に一貫性のある)モデルに焦点を当てています。複雑なクエリを必要とする会計システムやシステムなどの行取引。 NOSQLデータベースは、コンテンツ管理システム、リアルタイム分析、IoTアプリケーションのように、大量のデータを処理し、水平方向にスケーリングする必要があるアプリケーションに最適です。
以上がSQL vs NOSQL:選択方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

これらのトップ開発者ニュースレターを使用して、最新のハイテクトレンドについてお知らせください! このキュレーションされたリストは、AI愛好家からベテランのバックエンドやフロントエンド開発者まで、すべての人に何かを提供します。 お気に入りを選択し、Relを検索する時間を節約してください

このチュートリアルは、AWSサービスを使用してサーバーレスイメージ処理パイプラインを構築することをガイドします。 APIゲートウェイ、Lambda関数、S3バケット、およびDynamoDBと対話するECS Fargateクラスターに展開されたnext.jsフロントエンドを作成します。 th

このパイロットプログラム、CNCF(クラウドネイティブコンピューティングファンデーション)、アンペアコンピューティング、Equinix Metal、およびActuatedのコラボレーションであるCNCF GithubプロジェクトのARM64 CI/CDが合理化されます。 このイニシアチブは、セキュリティの懸念とパフォーマンスリムに対処します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

Dreamweaver Mac版
ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
