NewSQLを徹底解説!RDBとNoSQLの「いいとこ取り」って本当?
こんにちは。ゆうせいです。
突然ですが、データベースと聞いて皆さんは何を思い浮かべますか?Excelのような表計算ソフトをイメージする方もいれば、なんだか難しそうな専門用語を連想する方もいるかもしれませんね。
現代のWebサービスやアプリケーションの裏側では、必ずと言っていいほど「データベース」が活躍しています。その中でも、最近「NewSQL」という新しいタイプのデータベースが注目を集めているのをご存知でしょうか?
「NewSQLって何?」「SQLなら聞いたことあるけど…」という方も多いと思います。
安心してください!この記事では、新人エンジニアのあなたに向けて、NewSQLとは一体何者なのか、その特徴からメリット・デメリットまで、例えを交えながら分かりやすく解説していきます。一緒にデータベースの世界を探検しに行きましょう!
NewSQLが登場した背景:データベースの歴史を少しだけ
NewSQLを理解するためには、まずこれまでのデータベースの歴史を少しだけ知っておくと分かりやすいですよ。
昔ながらの優等生「RDB(リレーショナルデータベース)」
昔から広く使われているのが「RDB」というタイプのデータベースです。これは、データをExcelの表のように、行と列で整理整頓して保存するのが得意なデータベースです。
例えば、学校のクラス名簿を想像してみてください。生徒番号、名前、出席番号、テストの点数などがきちんと列で分けられていて、一人ひとりの生徒情報が行としてまとめられていますよね。このように、データをきっちりとした形式で管理するのがRDBの得意技です。
RDBの最大の長所は、データの「一貫性」をとても大切にするところです。これは、「データの矛盾が絶対に起きないようにする」という強い意志の現れで、専門用語では「ACID特性」と呼ばれています。
ACID特性とは?
ACID特性は、データベースを扱う上でとても重要な考え方です。銀行のATMでの取引を例に考えてみましょう。
特性 | 英語 | 説明 | ATMの例 |
原子性 | Atomicity | 一連の処理が「すべて成功」するか「すべて失敗」するかのどちらかであること | Aさんの口座からBさんの口座へ1万円送金する場合、「Aさんから1万円引く」処理と「Bさんに1万円足す」処理はセット。どちらか片方だけ実行されることはありません。 |
一貫性 | Consistency | データの矛盾が起きないこと | 送金処理の前後で、AさんとBさんの口座残高の合計金額は変わらない、というルールが守られます。 |
独立性 | Isolation | 複数の処理を同時に実行しても、お互いに影響を与えないこと | あなたがATMでお金を引き出している最中に、別の人が隣のATMで操作をしても、あなたの取引に影響はありません。 |
永続性 | Durability | 一度完了した処理の結果は、障害が起きても失われないこと | 送金が完了した後にシステムがダウンしても、その取引記録はしっかりと保存され、消えることはありません。 |
このように、RDBはACID特性のおかげで、お金の取引のような絶対に間違いが許されないシステムで非常に信頼されてきました。
しかし、RDBには少し弱点もありました。それは「スケールアウト」が苦手だということです。
スケールアウトとは、たくさんのアクセスやデータ量に対応するために、サーバーの台数を増やして性能をアップさせることを言います。RDBは、例えるなら「一人のすごく優秀なシェフ」のようなものです。一人でたくさんの料理を作るのは得意ですが、お客さんが急に100倍になったら、さすがに一人では対応しきれませんよね。
自由奔放な新星「NoSQL」
そこで登場したのが「NoSQL」です。NoSQLは、RDBのようにかっちりとした表形式にこだわらず、もっと自由にデータを保存できるデータベースです。
SNSの投稿のように、テキストだけでなく画像や動画が混ざっていたり、人によって投稿する内容がバラバラだったりするような、形式が決まっていないデータを扱うのが得意です。
NoSQLの最大の武器は、その圧倒的な「スケーラビリティ」、つまりスケールアウトが得意な点です。
NoSQLは、例えるなら「たくさんのシェフがいる巨大な厨房」です。お客さんが増えたら、シェフ(サーバー)をどんどん増やして対応できます。だから、世界中の人が利用するような大規模なWebサービスで広く使われるようになりました。
しかし、NoSQLにも弱点があります。それは、RDBが大切にしていた「一貫性」を少し緩めている点です。たくさんのシェフが同時に作業すると、情報の伝達が少し遅れて、ほんの一瞬だけデータの矛盾が生まれる可能性があるのです。これを専門用語で「結果整合性(Eventual Consistency)」と言います。
例えば、SNSで「いいね!」を押したのに、すぐに反映されず、少し経ってから表示された、という経験はありませんか?あれが結果整合性の一例です。すぐに反映されなくても大きな問題にならないようなシステムでは、NoSQLは非常に強力な武器になります。
RDBとNoSQLの「いいとこ取り」!NewSQLの誕生
ここでようやく本日の主役、「NewSQL」の登場です!
「RDBのデータ一貫性は捨てがたい…でもNoSQLのスケーラビリティも欲しい…」
そんなわがままな(?)願いを叶えるために生まれたのがNewSQLです。
NewSQLは、一言で言うと「RDBのACID特性による信頼性と、NoSQLのスケーラビリティを両立させたデータベース」なのです!まさに、両者の「いいとこ取り」をしたハイブリッドな存在と言えるでしょう。
例えるなら、「一人の超優秀なシェフ(RDB)がたくさん分身して、巨大な厨房(NoSQL)で一斉に、しかも完璧な連携を取りながら料理を作る」ようなイメージです。すごそうだと思いませんか!?
どうやって実現しているの?
NewSQLがこの「いいとこ取り」を実現できる秘密は、「分散データベース」という仕組みにあります。
データを複数のサーバーに分散して保存し、それらをあたかも一つの大きなデータベースであるかのように見せる技術です。これにより、RDBのようにSQLを使ってデータを操作でき、ACID特性を保ちながら、NoSQLのようにサーバーを増やすことで性能を向上させることができるのです。
NewSQLのメリットとデメリット
それでは、NewSQLの具体的なメリットとデメリットを見ていきましょう。
メリット
- スケーラビリティと一貫性の両立: これがNewSQL最大の特徴です。データの信頼性を保ちながら、システムを大きく成長させることができます。金融システムや大規模なECサイトなど、データの正確性と大量アクセスへの対応が同時に求められる場面で大活躍します。
- SQLが使える: 長い歴史を持つRDBで使われてきた「SQL」という言語をそのまま使える製品が多いのも大きなメリットです。多くのエンジニアにとって馴染み深いSQLが使えるため、学習コストを低く抑えることができます。
- 高い可用性: データを複数のサーバーに分散しているため、一部のサーバーに障害が発生してもシステム全体が停止しにくいという利点があります。これを「高可用性」と言います。
デメリット
- 複雑な構造: RDBとNoSQLのいいとこ取りをしている分、内部の仕組みは複雑になりがちです。そのため、導入や運用の難易度が少し高く、専門的な知識が必要になる場合があります。
- 比較的新しい技術: RDBやNoSQLに比べると歴史が浅いため、まだ発展途上の部分もあります。情報が少なかったり、対応しているツールが限られていたりすることもあります。
- コスト: 高機能な分、ライセンス費用や、性能を維持するためのサーバーコストが高くなる傾向があります。
データベース3兄弟を比較してみよう!
ここで、RDB、NoSQL、NewSQLの特徴を表で比較してみましょう。
特徴 | RDB (リレーショナルデータベース) | NoSQL | NewSQL |
得意なデータ形式 | 構造化データ(表形式) | 非構造化データ、半構造化データ | 構造化データ(表形式) |
データの一貫性 | 強い (ACID特性) | 弱い (結果整合性) | 強い (ACID特性) |
スケーラビリティ | スケールアップが得意 | スケールアウトが得意 | スケールアウトが得意 |
使われる言語 | SQL | 製品ごとに様々 | SQL |
例えるなら | 一人の優秀なシェフ | 大人数で分業する厨房 | 分身できる優秀なシェフがたくさん |
代表的な製品 | MySQL, PostgreSQL | Amazon DynamoDB, Google Bigtable | Google Cloud Spanner, CockroachDB, TiDB |
どんなときにNewSQLを選ぶべき?
ここまで読んでくださったあなたは、もうNewSQLがどんなものか、かなり理解できたのではないでしょうか?
では、実際にどのような場面でNewSQLが選ばれるのでしょうか。
それは、
- 金融機関の取引システム
- 世界規模で展開するオンラインゲーム
- 大規模なEコマースサイトの在庫管理システム
など、「データの正確性が絶対に必要で、かつ、将来的にアクセスが爆発的に増える可能性があるサービス」で採用されることが多いです。
もしあなたがこれから関わるプロジェクトがこのような特徴を持っていたら、「NewSQLという選択肢もあるのでは?」と考えてみてください!
まとめと今後の学習指針
今回は、データベース界の新しいスター「NewSQL」について解説しました。RDBの「信頼性」とNoSQLの「拡張性」という、二人の兄の良いところを受け継いだ、まさに夢のようなデータベースだということがお分かりいただけたでしょうか。
もちろん、どんな技術にも得意なことと苦手なことがあります。NewSQLが常に最適な選択肢というわけではありません。大切なのは、それぞれのデータベースの特徴をしっかりと理解し、作ろうとしているシステムの要件に合わせて最適なものを選ぶことです。
この記事を読んでNewSQLに興味を持ったあなたは、次に何を学ぶべきでしょうか?
まずは、今回紹介した代表的なNewSQL製品である「Google Cloud Spanner」や「CockroachDB」、「TiDB」などが、どのような仕組みで動いているのかを公式サイトなどで調べてみるのがおすすめです。
また、データベースの整合性を保つための技術である「分散合意アルゴリズム(例: Paxos, Raft)」など、少し難しい専門用語にもチャレンジしてみると、NewSQLの理解がさらに深まるはずです。
データベースの世界は奥が深く、学ぶことはたくさんありますが、一つ一つ理解していくことで、エンジニアとしてのあなたの世界は間違いなく広がっていきます。
頑張ってください!応援しています!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。