ホームページ  >  記事  >  データベース  >  NoSQL を学習する Redis の概要

NoSQL を学習する Redis の概要

coldplay.xixi
coldplay.xixi転載
2021-02-02 17:44:462109ブラウズ

NoSQL を学習する Redis の概要

# 推奨 (無料): redis 入門チュートリアル

#1. インターネット時代の文脈における大きなチャンス、NoSQL を使用する理由

1.1 スタンドアロン MySQL の古き良き時代

1990 年代には、 Web サイトへのアクセスは一般的にそれほど大きくないため、単一のデータベースで簡単に処理できます。

当時は静的な Web ページがほとんどで、動的なインタラクティブな Web サイトはあまりありませんでした。

NoSQL を学習する Redis の概要 DAL dal は、Data Access Layer の英語の略称で、データ アクセス層 (Data Access Layer) です。

上記のアーキテクチャの下で、どのようなものがあるのか​​を見てみましょう。データストレージのボトルネック?

1. データの総量が 1 台のマシンに収まらない場合
2. データ インデックス (B ツリー) が 1 台のマシンのメモリに収まらない場合
3. データの量アクセス (読み取りと書き込みの混合) は 1 つのインスタンスでは許容できません
上記の 1 つまたは 3 つが満たされる場合は、進化します...

1.2.Memcached (キャッシュ) MySQL 垂直分割

その後、アクセス数が増加するにつれて、MySQL アーキテクチャを使用するほとんどの Web サイトでデータベースのパフォーマンス上の問題が発生し始め、Web プログラムは機能だけを重視するのではなく、パフォーマンスも追求するようになりました。

プログラマは、データベースへの負担を軽減し、データベースの構造とインデックスを最適化するために、キャッシュ テクノロジを広範囲に使用し始めました。当初は、データベースの負荷を軽減するためにファイル キャッシュを使用することが一般的でした。しかし、アクセス数が増加し続けると、ファイル キャッシュを通じて複数の Web マシンを共有できなくなります。また、多数の小さなファイル キャッシュにより、比較的高い IO 負荷が生じます。 .。現時点では、Memcached は当然ながら非常にファッショナブルな技術製品となっています。 これは、データベースに直接アクセスする前の dao 層と同等ですが、中間にキャッシュ層が挿入されます。データベースへの頻繁なアクセスはパフォーマンスの低下を引き起こすため、負荷を軽減するためにコンテンツの一部をキャッシュに置きます。
NoSQL を学習する Redis の概要
1.3. Mysql マスターとスレーブの読み取り/書き込みの分離

データベースに対する書き込みプレッシャーが増加しているため、Memcached はデータベースに対する読み取りプレッシャーを軽減することしかできません。データベース

。 1 つのデータベースに読み取りと書き込みが集中すると、データベースに負荷がかかります。

ほとんどの Web サイトは、読み取りと書き込みの分離を実現するマスター/スレーブ レプリケーション テクノロジを使用し始め、読み取りと書き込みのパフォーマンスと読み取りデータベースのスケーラビリティを向上させています。 。 Mysql のマスター/スレーブ モード は、現時点では Web サイトの標準構成になっています。 説明: マスター データベースにレコードの更新があります。データの整合性を確保するには、データをスレーブ データベースにコピーする必要があります。読み取りと書き込みの分離: マスター/スレーバー。書き込み操作をマスター ライブラリに配置し、読み取り操作をスレーブ ライブラリに配置できます。
NoSQL を学習する Redis の概要1.4. mysql クラスターをテーブルとデータベースに水平方向に分割します

Memcached のキャッシュ、MySQL のマスター/スレーブ レプリケーション、および読み取り/書き込み分離に基づいて、At今回は、MySQL メイン データベースの書き込み圧力がボトルネックになり始めました、データ量が急増し続けました。

MyISAM はテーブル ロックを使用するため、同時実行性が高いと深刻なロックの問題が発生します

。多数の高同時実行性 MySQL アプリケーションが、MyISAM の代わりに InnoDB エンジンを使用し始めました。 同時に、 は書き込み圧力やデータ増加による拡張の問題を軽減するためにサブテーブルとサブデータベースを使用することが一般的になりました。現時点では、サブテーブルとサブデータベースは人気のあるテクノロジーになっており、面接でよく聞かれる質問であり、業界で議論されるホットな技術問題でもあります。この時点で、MySQL はまだ安定していなかったテーブル パーティションを開始しましたが、これは平均的な技術力を持つ企業にも希望をもたらしました。 MySQL は MySQL Cluster クラスターを開始しましたが、そのパフォーマンスはインターネットの要件を十分に満たすことはできませんが、高い信頼性の点で非常に大きな保証を提供するだけです。
テーブルロックと行ロック? サブライブラリとサブテーブル 1-3000 が No.1 データベースに入ります。 3001~6000は倉庫2へ。お待ちください
NoSQL を学習する Redis の概要#1.5. MySQL のスケーラビリティのボトルネック

MySQL データベースには大きなテキスト フィールドも格納されることが多く、その結果、データベース テーブルが非常に大きくなります。非常に遅く、データベースを迅速に復元することが困難です。たとえば、4KB のテキスト 1,000 万個のサイズは 40GB 近くになりますが、このデータを MySQL から省略できれば、MySQL は非常に小さくなります。リレーショナル データベースは強力ですが、すべてのアプリケーション シナリオに対応できるわけではありません。 MySQL はスケーラビリティが低い (実装には複雑な技術が必要)、ビッグデータ下では IO プレッシャーが高い、テーブル構造を変更するのが難しいなど、現在 MySOL を使用している開発者が直面している問題があります。

1.6. 今日はどのような感じですか? ?

ファイアウォール-nginx-Tomcat クラスター

1.7 NoSQL を使用する理由NoSQL を学習する Redis の概要

今日、私たちはサードパーティのプラットフォーム (Google、Facebook など) を通じて簡単にデータにアクセスし、データを取得できるようになりました。ユーザーの個人情報、ソーシャルネットワーク、地理的位置、ユーザー生成データ、ユーザー操作ログは飛躍的に増加しています。これらのユーザー データをマイニングしたい場合、SQL データベースはこれらのアプリケーションには適していませんが、NoSQL データベースの開発により、これらの大規模なデータを非常に適切に処理できるようになります。
NoSQL を学習する Redis の概要

2.

NoSQL (NoSQL = Not Only SQL) とは、「SQL だけではない」という意味で、一般的に非リレーショナルデータベースへ。インターネット Web2.0 Web サイトの台頭により、従来のリレーショナル データベースは Web2.0 Web サイト、特に超大規模で同時実行性の高い SNS タイプの Web2.0 の純粋に動的な Web サイトに対応できなくなり、多くの克服できない問題が明らかになりました。データベースは、その独自の特性により非常に急速に発展しました。 NoSQL データベースは、大規模なデータ収集と複数のデータ型によってもたらされる課題、特に超大規模データのストレージを含むビッグ データ アプリケーションの問題を解決するために作成されました。

(たとえば、Google や Facebook は、ユーザーに関する何兆ビットものデータを毎日収集しています)。

これらのタイプのデータ ストアは固定スキーマを必要とせず、冗長な操作を行わずにスケールアウトできます。

3. できること

拡張が簡単

NoSQL データベースにはさまざまな種類がありますが、一般的なのは 1 つです。この機能は、リレーショナル データベースのリレーショナル特性を削除することです。データ間に関連性がないため、拡張が非常に簡単です。また、目に見えない形でアーキテクチャ レベルでのスケーラビリティ機能も実現します。

大規模なデータ ボリュームに対する高いパフォーマンス

NoSQL データベースは非常に高い読み取りおよび書き込みパフォーマンスを備えており、特に大規模なデータ ボリュームでも優れたパフォーマンスを発揮します。

これは、リレーションシップがなく、データベース構造が単純であるためです。

一般的に、MySQL はクエリ キャッシュを使用します。テーブルが更新されるたびにキャッシュは無効になります。粒度の大きなキャッシュです。Web2.0 で頻繁にやり取りを行うアプリケーションでは、キャッシュのパフォーマンスは高くありません。

NoSQL のキャッシュはレコードレベルで粒度の細かいキャッシュであるため、このレベルでは NoSQL のパフォーマンスがはるかに高くなります。

多様で柔軟なデータ モデル

NoSQL は、保存するデータのフィールドを事前に作成する必要がなく、いつでもカスタマイズしたデータ形式を保存できます。時間。

リレーショナル データベースでは、フィールドの追加と削除は非常に面倒です。非常に大量のデータを含むテーブルの場合、フィールドの追加は単なる悪夢です。


従来の RDBMS VS NOSQL

RDBMS

高度に組織化された構造化データ

構造化照会言語 (SQL)
データとリレーションシップは両方とも別々に保存されますテーブル
データ操作言語、データ定義言語
厳密な一貫性
基本トランザクション

NoSQL
SQL以上のものを表現 宣言型クエリなし 言語
事前定義スキーマなし
Key-Value ストア、列ストア、ドキュメント ストア、グラフ データベース
ACID プロパティではなく結果整合性
非構造化および予測不可能なデータ:
CAP 定理
高パフォーマンス、高可用性、およびスケーラビリティ

4. NoSQL とは何ですか

Redis (データ型とキャッシュ、あらゆる面で優れています)

Memcached (キャッシュ)

MongDB (最も類似しています)

5.

KV## の再生方法 # キャッシュ

永続性


Redis についての理解を話してください。 KV-CACHE-PERSITENCE

3V 3 高

ビッグデータ時代の 3V: 大量のボリューム

多様な多様性

リアル-time Velocity
システム、淘宝ダブルイレブンの大量データに関するいくつかの問題の説明。 Weibo、テキストフィールド、ビデオフィールド、背景フィールドなど。多様化。 12306 には高いリアルタイム要件があります。絶対的なリアルタイムは不可能です

3 つの高いインターネット要件:
高同時実行

高度な包括的

高パフォーマンス
システムは 12306 などの高同時実行をサポートする必要があります。スレッドを取得します。
水平方向と垂直方向の拡張性。水平方向では、1 台のマシンでは不十分な場合は、さらにマシンを追加します。
高パフォーマンス要件


関連する詳細については、

redis

列を参照してください。 。

以上がNoSQL を学習する Redis の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。