Redis-1 の概要 Rieds について初めて知る

1 nosql の概要

1.1 nosql の概要

インターネット Web2.0 Web サイトの台頭により、従来のリレーショナル データベースでは Web2.0 Web サイト、特に超大規模で同時実行性の高い SNS 型の純粋に動的な Web2.0 Web サイトを処理できなくなり、多くの克服できない問題が発生しています。露出。いいね:

1.1.1 データベースの同時読み取りおよび書き込みの要件

  Web サイトは動的ページを生成し、ユーザーのパーソナライズされた情報に基づいて動的情報をリアルタイムで提供する必要があるため、動的ページの静的テクノロジを使用することは基本的に不可能であるため、データベースの同時負荷が非常に高く、多くの場合、数万の読み取りおよび書き込みリクエストに達します。毎秒。リレーショナル データベースは数万の SQL クエリにかろうじて耐えることができますが、ハードディスク IO はもはや数千万の SQL 書き込みデータ リクエストを処理できません。

1.1.2 効率的なストレージと大量のデータへのアクセスに対する需要

  大規模なSNSサイトでは、毎日大量のユーザー更新が発生し、海外のFriendfeedを例にとると、1か月で2億5,000万件のユーザー更新に達しますが、リレーショナルデータベースでは、2億5,000万件のレコードを持つテーブルでSQLが実行されます。質問すると、効率は非常に低いか、耐えられないほどです。

1.1.3 データベースの高いスケーラビリティと高可用性の必要性

  Web ベースのアーキテクチャでは、データベースは水平方向に拡張することが最も困難であり、アプリケーション システムのユーザー数やアクセス数が日々増加すると、データベースに Web サーバーやアプリケーション サーバーなどのサーバーを単純に追加することはできません。サービス ノードを使用してパフォーマンスと負荷容量を拡張します。7 時間 24 時間の中断のないサービスを提供する必要がある多くの Web サイトでは、ダウンタイムのメンテナンスやデータ移行が必要となるデータベース システムのアップグレードと拡張は非常に困難です。サーバー ノードを継続的に追加することでデータベースを拡張できないのはなぜですか? ?

  前述の「3 つの高い」要件に直面して、リレーショナル データベースは乗り越えられない障害に直面していますが、Web2.0 Web サイトの場合、リレーショナル データベースの主な機能の多くは役に立たないことがよくあります。たとえば、次のとおりです。

  (1) データベーストランザクションの整合性要件

  多くの Web リアルタイム システムでは、厳密なデータベース トランザクションは必要なく、読み取り一貫性の要件は非常に低く、書き込み一貫性の要件がそれほど高くない場合もあります。そのため、データベースの高負荷下ではデータベースのトランザクション管理が大きな負担となっていました。

  (2) データベースのリアルタイム書き込みおよびリアルタイム読み取り要件

  リレーショナル データベースの場合、データを挿入した直後にクエリを実行すると、そのデータを確実に読み出すことができます。それほど高いリアルタイム性は必要ありません。

  (3) 複雑な SQL クエリ、特に複数テーブルの関連付けクエリの要件

  大量のデータを扱う Web システムでは、複数の大きなテーブルの関連付けられたクエリや、複雑なデータ分析タイプの複雑な SQL レポート クエリ、特に SNS タイプの Web サイトでは、この種の需要と製品設計の観点から、この種のクエリは非常にタブーです。クエリの回避が行われる状況が発生します。多くの場合、それは単一テーブルの主キー クエリと単一テーブルの単純な条件付きページング クエリだけであり、SQL の機能は大幅に弱まります。

        したがって、リレーショナル データベースは、こうしたますます多くのアプリケーション シナリオにはあまり適しておらず、そのような問題を解決するために非リレーショナル データベースが登場しました。NoSQL は広義の非リレーショナル データ ストレージです。これは、リレーショナル データベースと ACID 理論の長年にわたる統合を破壊します。NoSQL データ ストレージには固定テーブル構造は必要ありません (たとえば、キーと値のペアで保存され、その構造は固定されておらず、各タプルは異なるフィールドを持つことができ、各タプルは必要に応じて独自のキーと値のペアの一部を追加できます)。したがって、固定構造に限定されず、時間とスペースのオーバーヘッドを削減でき、通常は接続操作はありません。

1.2 NoSQL の比類のない機能

  ビッグ データ アクセスにおいては、リレーショナル データベースと比べて、次のようなパフォーマンス上の比類のない利点があります。

1.2.1 拡張が容易

  NoSQL データベースには多くの種類がありますが、共通の特徴は、リレーショナル データベースのリレーショナル機能を削除していることです。データ間に関連性がないため、拡張が非常に簡単です。目には見えませんが、アーキテクチャ レベルでスケーラブルな機能をもたらします。

1.2.2 大量のデータ、高いパフォーマンス

  NoSQL データベースは、特に大量のデータの場合に読み取りおよび書き込みのパフォーマンスが非常に高く、パフォーマンスも優れています。これは、データベースの非リレーショナルな性質と構造が単純であるためです。

1.2.3 柔軟なデータモデル

  NoSQL では、保存するデータのフィールドを事前に作成する必要がなく、いつでもカスタマイズしたデータ形式を保存できます。リレーショナル データベースでは、フィールドの追加と削除は非常に面倒です。非常に大量のデータを含むテーブルの場合、フィールドの追加は単なる悪夢です。これは、大量のデータが存在する Web 2.0 の時代に特に顕著です。

1.2.4 高可用性 (HA)

NoSQL は、パフォーマンスに影響を与えることなく、高可用性アーキテクチャを簡単に実装できます。たとえば、Cassandra モデルと HBase モデルも、モデルを複製することで高可用性を実現できます。

 

要約すると、NoSQL の非リレーショナルな性質により、NoSQL はポスト Web 2.0 時代の寵児となり、大規模な Web 2.0 Web サイトが再び軌道に乗るのに役立ち、データベースにとってまったく新しい革命的な動きとなります。

1.3 Redis の概要

アプリケーションの高パフォーマンス要求の高まりに伴い、NoSQL は大手有名企業のシステム アーキテクチャに徐々に定着してきました。現在、Membase、MongoDB、Apache Cassandra、CouchDB など、さまざまな種類の NoSQL 製品が登場しています。しかし、ソーシャル大手の新浪微博、メディア大手のバイアコム、写真共有のリーダーであるピンタレストなど、国内外のインターネット大手企業はすべて、NoSQL データベースの選択肢として Redis を採用しています。多くの有名企業が夢中になる可能性があります。

  公式声明によると、Redis は C 言語で書かれたオープンソースで、「Key/Value」(Key/Value) 型データ用の分散 NoSQL データベース システムであり、高性能、永続ストレージ、および高同時実行アプリケーションを特徴としています。 。したがって、Redis は純粋にアプリケーション向けであると言え、高性能のキー/値データベースであり、複数の言語 (弊社の大きな C# を含む) で API も提供されます。そこで、おそらく「パフォーマンスとは何ですか?」と尋ねるでしょう。以下は公式のベンチマークデータです。

  テストは、100,000 リクエストを 50 回同時に実行して行われました。

  設定および取得する値は 256 バイトの文字列です。

  Linux ボックスは、X3320 Xeon 2.5 GHz である Linux 2.6 を実行しています。

  テキストの実行にはループバック インターフェイス (127.0.0.1) が使用されます。

  結果:読み取り速度は110,000回/秒、書き込み速度は81,000回/秒でした。(もちろん、サーバー構成が異なればパフォーマンスも異なります)。

  Memcached と同様に、Redis は、string (文字列)、list (リンク リスト)、set (コレクション)、zset (並べ替えられたセット -- 順序付きセット)、および hash (ハッシュ タイプ) など、比較的多くの値の種類をストレージに対してサポートします。これらのデータ型は、プッシュ/ポップ、追加/削除、交差、結合、差分などの豊富な操作をサポートしており、これらの操作はアトミックです。これに基づいて、Redis はさまざまな方法で並べ替えをサポートします。Memcached と同様に、データは効率を確保するためにメモリにキャッシュされます。違いは、Redis が定期的に更新データをディスクに書き込むか、変更操作を追加のレコード ファイルに書き込むことと、これに基づいてマスターとスレーブ (マスターとスレーブ) の同期 (マスター サーバーから任意の数のサーバーにデータを送信できる) を実現することです。スレーブ サーバー上で同期します。スレーブ サーバーは、他のスレーブ サーバーに関連付けられたマスター サーバーになることができます。)。

したがって、Redis の登場により、Memcached などのキー/値ストレージの不足が大幅に補われ、場合によってはリレーショナル データベースで非常に優れた補完的な役割を果たすことができます。

1.4 Redis とは

Redis は、ネットワーク対話をサポートする、C 言語で書かれたオープンソースのメモリベースの永続的な Key-Value データベースです。

redis の作者である Salvatore Sanfilippo はイタリアのシチリア島出身で、現在はカターニアに住んでいます。現在はピボタルに勤務。彼が使用しているスクリーン ネームは antirez です。興味がある場合は、antirez.com で彼のブログにアクセスしてください。彼の github アドレスは http://github.com/antirez です。

記事はインターネットから取得したものです

 

おすすめ

転載: blog.csdn.net/evil_lrn/article/details/89503374