記事ディレクトリ
1. NoSQLの概要
1.1 NoSQLとは
NoSQL:SQLだけでなく、非リレーショナルデータベース
NoSQLは一般的な用語です
- 従来のRDBMSモデルに従わないデータベースを指します
- データは非リレーショナルであり、メインのクエリ言語としてSQLを使用しません
- データベースのスケーラビリティと可用性の問題を解決する
- 原子性や一貫性の問題には対応していません
1.2 NoSQLを使用する理由
インターネットの発展に伴い、従来のリレーショナルデータベースにはボトルネックがあります
- 高い同時読み取りおよび書き込み
- 大容量
- 高可用性
- 高い拡張性
- 低価格
NoSQLとリレーショナルデータベースの比較
主に以下の違いがあります
比較した | NoSQL | 関係データベース |
---|---|---|
共通データベース | HBase、MongoDB、Redis | Oracle、DB2、MySQL |
保存形式 | ドキュメント、キーと値のペア、グラフ構造 | テーブルのフォーマット、行と列 |
保管仕様 | 冗長性を奨励する | 規範的、重複を避ける |
ストレージ拡張 | スケールアウト、分散 | 垂直方向の拡張(限られた水平方向の拡張) |
問い合わせモード | 構造化クエリ言語SQL | 非構造化クエリ |
事務 | トランザクションの一貫性をサポートしていません | サポート業務 |
パフォーマンス | 高い読み取りおよび書き込みパフォーマンス | 読み取りと書き込みのパフォーマンスが低い |
費用 | シンプルで導入が簡単、オープンソース、低コスト | 高コスト |
1.3 NoSQLの機能
-
最終的な一貫性
-
アプリケーションにより、一貫性を維持し、トランザクションを処理する責任が増加しました
-
冗長データストレージ
-
NoSQL!=ビッグデータ
- NoSQL製品は、ビッグデータストレージの問題を解決するのに役立ちます
- ビッグデータには、データストレージの問題だけではありません
- Hadoop
- カフカ
- スパークなど
1.4 NoSQLの基本概念
- 3つの礎石
- CAP、BASE、最終整合性
- 索引付け(index)、クエリ(query)
- MapReduce
- シャーディング
- CAP理論
- データベースは最大2/3をサポートします
- 一貫性
- 可用性
- パーティショントレランス(パーティションフォールトトレランス)
- NoSQLは「ACID」を保証しません
- 「結果整合性」を提供する
- ベース
- 基本的に入手可能(基本的に利用可能)
- コアが使用可能であることを確認してください
- ソフトステート
- 状態がしばらくの間同期していない可能性があります
- 結果整合性(結果整合性)
- 一定の期間の後、データは最終的に一貫した状態に達することができます
- 核となる考え方は、強い整合性が達成できない場合でも、アプリケーションは最終的な整合性を達成するための適切な方法を選択できるということです
- 最終的な一貫性
- 最終結果は一貫しており、常に一貫しているわけではありません
- 口座残高や在庫などのデータには、強い整合性が必要です
- カタログなどの情報は強い整合性を必要としません
- 因果律(因果律)
- Read-your-writesの一貫性
- セッションの一貫性
インデックスとクエリ
- インデックス作成(インデックス作成)
ほとんどのNoSQLはキーによってインデックスが作成されます
。NoSQLの一部により、セカンダリインデックス
HBaseでHDFSを使用できるようになり、追加のみの
バッチ書き込みが記録さ
れ、ファイルを再作成およびソート - クエリ(クエリ)に
は特別なクエリ言語がありません。通常、クエリにはスクリプト言語を使用します
。SQLクエリのサポートを開始し
たり、MapReduceコードクエリを使用したりできる
MapReduce、シャーディング
- MapReduce
はHadoopのMapReduceではなく、概念は
データ処理とクエリに関連しています - シャードを複製できる
パーティション化モードのシャーディング(シャーディング)は、災害復旧に適しています
1.5 NoSQL分類
主に以下の4つのカテゴリーに分かれます
分類 | 例えば | 一般的なアプリケーションシナリオ |
---|---|---|
Key-Valueストアデータベース(Key-Value) | Redis、MemcacheDB、Voldemort | コンテンツのキャッシュなど |
列ストアデータベース(WIDE COLUMN STORE) | Cassandra、HBase | 分散ストレージの膨大なデータに対応 |
文書データベース(DOCUMENT STORE) | CouchDB、MongoDB | Webアプリケーション(Key-Valueデータベースのアップグレードバージョンと見なすことができます) |
グラフDB | Neo4J、InfoGrid、Infinite Graph | リレーションシップグラフの作成に焦点を当てたソーシャルネットワーク、レコメンデーションシステムなど |
Key-Valueストアデータベース(Key-Value)
列ストアデータベース(ワイド列ストア)
ドキュメントストア
グラフデータベース
1.6 NoSQL、BI、ビッグデータの関係
- BI(ビジネスインテリジェンス):ビジネスインテリジェンス
これはソリューションの完全なセットです
。BIアプリケーションにはモデルに依存するモデルが含まれます
。BIは主に標準SQLをサポートし、NoSQLサポートはリレーショナルデータベースよりも弱いです。 - NoSQLはビッグデータとの相関が高く
、一般に、列ストレージデータベースは
HBaseやHadoopなどのビッグデータシナリオで使用されます。
2. HBaseの概要
2.1 HBaseの概要
- HBaseは主要なNoSQLデータベースです。
列指向のストレージデータベースです。GoogleBig Tableペーパーに基づく
分散ハッシュマップ
です。
ストレージとしてHDFSを使用し、その信頼性を使用しています。 - HBaseの機能
高速データアクセス速度、応答時間は約2〜20ミリ秒
ランダムな読み取りと書き込みをサポート。各ノード
は20k〜100k + ops / sのスケーラビリティで、20,000以上のノードに拡張できます。
2.2 HBase開発履歴
時間 | 出来事 |
---|---|
2006年 | GoogleがBig Tableに関する論文を発表 |
2007年 | HBaseの最初のバージョンとHadoop 0.15.0が一緒にリリースされます |
2008年 | HBaseがHadoopのサブプロジェクトになる |
2010年 | HBaseがトップのApacheプロジェクトになる |
2011年 | ClouderaはHBase0.90.1に基づいてCDH3を起動します |
2012 | HBaseリリースバージョン0.94 |
2013〜2014 | HBaseは0.96バージョン/0.98バージョンをリリースしました |
2015-2016 | HBaseはバージョン1.0、バージョン1.1、バージョン1.2.4をリリースしました |
2017年 | HBaseリリースバージョン1.3 |
2018年 | HBaseがバージョン1.4およびバージョン2.0をリリース |
2.3 HBaseユーザーグループ
2.4 HBaseアプリケーションのシナリオ
- アプリケーションシナリオ-1
増分データ-時系列データ
大容量、高速書き込み
- アプリケーションシナリオ-2
情報交換メッセージング
大容量、高速の読み書き
- アプリケーションシナリオ-3
コンテンツサービス-Webバックエンドアプリケーション
大容量、高速の読み書き
2.5 Apache HBaseエコシステム
HBaseエコシステムテクノロジー
Lily – HBaseベースのCRM
OpenTSDB – HBase指向の時系列データ管理
Kylin – HBase上のOLAP
Phoenix – SQL操作HBaseツール
Splice Machine – HBase
Apache
Tephraに基づくOLTP – HBaseトランザクションサポートTiDB –分散SQL DB
Apache Omid-Optimizeトランザクション管理
Yarnアプリケーションタイムラインサーバーv.2 HBaseに移行
HiveメタデータストレージはHBaseに移行できます
Ambari Metrics ServerはデータストレージにHBaseを使用します
2.6HBaseアーキテクチャ
1.物理アーキテクチャ
HBaseはマスター/スレーブアーキテクチャを採用
-
HMasterの役割
は、HBaseクラスターのマスターノードであり、HA
管理と分散を実現するために複数のノードで構成できます。Region は、RegionServer
のロードバランシングを担当します。障害が発生
したRegionServerを見つけ、それらのリージョンを再分散します。 -
RegionServer
RegionServerは、リージョンの管理と保守を担当します
。1つのRegionServerには1つのWAL、1つのBlockCache(読み取りキャッシュ)、および複数のリージョン
が含まれます。1つのリージョンには複数のストレージ領域が含まれ、各ストレージ領域は列ファミリーに対応します
。1つのストレージ領域は複数のStoreFilesおよびMemStoresで構成されます
。1つのStoreFileは1つのHFileと列ファミリーの
HFileとWALはシーケンスファイルとしてHDFSに保存され、
クライアントはRegionServerと対話します
- 地域和テーブル
2.論理アーキテクチャー行
- 行キー(行キー)は一意であり、並べ替えられています
- スキーマはいつレコードを挿入するかを定義できます
- 他の行が使用されていない場合でも、各行は独自の列を定義できます
- 関連する列は列ファミリーとして定義されます
- 一意のタイムスタンプを使用して複数の行バージョンを維持する
- 値のタイプはバージョンによって異なる場合があります
- HBaseデータはすべてバイト単位で保存されます
2.7 HBaseデータ管理
- データ管理ディレクトリ
- システムカタログテーブルhbase:meta
- メタデータなどの保存
- HDFSディレクトリ内のファイル
- サーバー上のリージョンインスタンス
- システムカタログテーブルhbase:meta
- HDFS上のHBaseデータ
- HDFSファイルで修復できます
- 修復パス
- RegionServer-> Table-> Region-> RowKey->列族
2.8HBaseアーキテクチャの機能
- 強い整合性
- 自動拡張
- 地域が大きくなると自動的に分割
- HDFSを使用してデータを拡張し、スペースを管理する
- 書き込み回復
- 使用WAL(ログの先行書き込み)
- Hadoopとの統合