こんにちは、エアロスパイクです。
日々、色々な方とお話しさせていただく中で
「No SQLって何に使えば良いの?」
「RDB(リレーショナルデータベース)でも良いんじゃないの?」
と言うご質問をいただくことが増えてきました。
そこで今回は、「No SQLとは?」「RDBとの違い」に焦点を当て、貴社のビジネスで
どのようにお役立ていただけるか解説いたします。
No SQLとは
No SQLはNot Only SQLの略と言われており、RDBではないデータベースの総称と言われています。
No SQLの大きな特徴としてはデータが構造化されないことです。
RDB(リレーショナルデータベース)の場合はテーブルの構造を定義し、そこにデータを入れて操作することになります。
また、テーブルタブの連携も定義しておきます。
No SQLでは、RDBのようなデータの構造化を行いません。
ではNo SQLではどのようにデータを定義し、構造化するのでしょうか。
No SQLのデータモデルには下記の種類があります。
- レコードストア(キーバリューストア):キーと複数の値のセットで操作
- カラムストア:同一カラムの値を操作
- ドキュメントストア:JSONなどのドキュメントを操作
- グラフストア:データがネットワーク上で関連
レコードストア
一見RDBと同じように見えますが、No SQLではキーでのアクセスが前提になります。キーでのアクセスが最適化されたデータの管理を行なっています。そのため、他のデータとの関連付けを行わず、最適化はせず、必要なバリューはできるだけレコードに持つことになります。
カラムストア
カラムごとにデータを集計とアクセスをすることを目的とした構造です。
ドキュメントストア
JSONなどのドキュメントでデータを保持し、アクセスする仕組みです。
グラフストア
ノードと呼ばれる個別の情報を集めたものの間をエッジと呼ばれる意味付けをした関連付けを行うことで、ネットワーク上の構造を構成したものです。
No SQLの強みと弱み
強み
- 低レイテンシーを実現できる
- 高スループットが実現できる
- データの複製が容易
- 複数サーバにデータを分散させることが容易
- 分散できるので大量データの所持が可能
- 分散できるのでスケールアウトが容易
- アベイラビリティが容易
弱み
- 一貫性を保つのが難しい
- 複数レコードに渡るトランザクションが難しい
- 複数テーブルの連携が難しい
- 検索負荷が高い
RDBとの違い
ではRDBとはどのような違いがあるのでしょうか?
RDBではデータは構造化され、列と行が明確に定義されています。
列の定義では最適化が非常に重要です。テーブルごとにデータを重複させず、必要な情報をテーブルに関連づけることで取得することができます。
RDBの強みと弱み
強み
- 一貫性がある
- トランザクションが可能
- 複数テーブルの関連付けが可能
- 検索性能が高い
弱み
- レイテンシーが比較的高い
- スループットに限界がある
- データの複製が難しい
- 複数サーバに分散が難しい
- 大量データが扱えない
- スケールアウトが難しい
以上がNo SQLとRDBの違いでした。
RDBでは一貫性を要求されるシステム(金融処理)や、検索性能が要求されるシステム(ECサイト)を得意とし、一方No SQLでは高速性能が要求されるシステム(ネット広告、不正検知、チャット)や大量データの処理が必要なシステム(IoT、データ分析、AI)を得意とします。
Aeospikeは、一貫性にも対応できるので、金融処理にも活用いただいています。
事例:Paypal
Paypalでは、デジタル決済におけるリアルタイムな不正防止対策としてAerospikeをご活用いただいています。
Aerospikeはアカウントの動作や、アカウント統計を保持しており不正検出システムはAerospikeにアクセスしルールのチェックに必要なデータを取得します。また、Aerospikeに保持しているデータからルールの作成も行えます。
もともとPaypalではOracle RACとTerracotaを利用していましたが、Aerospikeにリプレイスすることで、サーバ台数を15分の一に削減することに成功しました。
Paypalのより詳しい事例やその他金融事例についてはブログ「大手金融会社3 社はどのように革新的な詐欺に立ち向かったのか」もしくは下記のウェビナーよりご覧いただけます。