SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

翔泳社の本(AD)

NewSQLとは何か? SQL(RDBMS)やNoSQLとの違いと「いいとこどり」の特徴をマンガで解説

  • X ポスト
  • このエントリーをはてなブックマークに追加

 SQL(リレーショナルデータベース)の信頼性と、NoSQLのスケーラビリティ。この2つのいいとこどりをしたのが、最近注目されている「NewSQL」です。今回は書籍『わかばちゃんとつくって、壊して、直して学ぶ NewSQL入門』(翔泳社)から、NewSQLの基本情報、SQLとNoSQLとの比較、注目の背景を解説します。さらに、MySQLと高い互換性を持つオープンソースのNewSQLである「TiDB」についても紹介。データベースの次の一手を考えているエンジニアにおすすめです。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本記事は『わかばちゃんとつくって、壊して、直して学ぶ NewSQL入門』(著者:関口匡稔、小板橋由誉、湊川あい)の「Chapter 1 はじめてのNewSQL」から一部を抜粋したものです。掲載にあたって編集しています。

※掲載のマンガは誌面の都合で、左上から読む形式になっています。

はじめてのNewSQL

Chapter 1 マンガ1
Chapter 1 マンガ2
Chapter 1 マンガ3
Chapter 1 マンガ4
Chapter 1 マンガ5

NewSQLとは

 NewSQLってなんでしょうか。本書を手にとった読者の皆さんは、もちろんNewSQLという言葉に興味があって手にとられたことでしょう。GoogleのCloud SpannerTiDBといったNewSQLと呼ばれているデータベースを知っている読者の方も多いのではないでしょうか。

 NewSQLは、一般的にはNoSQLのようなスケーラビリティを持ちつつ、従来のSQL(リレーショナル)データベースのように利用できる新しいタイプのデータベースがそう呼ばれています。

 おもしろいことに、実際にどのデータベースがNewSQLなのかについては、実は明確な定義はありません。メディアでそう呼ばれていたり、製品のベンダーが自社の製品をそう呼んでいたりとさまざまです(製品ベンダーによっては自社の製品を分散SQL、またはDistributed SQLと呼んでいるものもあります)。

 どの製品をNewSQLと呼ぶかについて明確な定義はありませんが、これらのデータベースには共通の特徴があります。1つはスケーラビリティ、つまり性能やデータ容量を簡単に増やしたり減らしたりでき、かつそれが大規模になってもパフォーマンスと信頼性が維持される点です。

 もう1つはリレーショナルデータベースと同様にSQLが利用でき、トランザクションが使え、データの一貫性が担保できることです。本書ではこのような特徴を備えたデータベースをNewSQLと呼ぶことにします。

 とはいっても、わかったようなわからないような気がしますね。本書の目的は実際にNewSQLを動かしさわってみることで、NewSQLの特徴を具体的に理解していくことです。本書ではNewSQLの1つであるTiDBを使い、NewSQLの特徴と動きについてハンズオン形式で理解を深めていきます。

SQL, NoSQL, NewSQLの違い

 おそらく読者の皆さんも含めて、多くのエンジニアが使うデータベースの数は、1個か多くても片手で数えられるくらいではないでしょうか。

 オープンソースで広く利用されているMySQLPostgreSQLといったデータベースはPCでも動作させることができますし、SQLiteなどは言語のライブラリとしても利用可能になっています。

 最近はクラウドベンダーが便利なマネージドデータベースをそろえているので、はじめて使うデータベースがこれらの製品という方も多いのではないでしょうか。データベースは身近ですが、代表的なものは限られている印象がありますね。

 実は市場にはもっと多くのデータベース製品が存在します。データベースの一覧とそのランキングを掲載しているDB-enginesには、執筆時点で300以上ものデータベース製品があります。その中には非常に長い歴史を持つものも、最近出てきたものもあります。普段はあまり意識することはないですが、データベースは進化を続けている分野だということがわかります。

 データベースにはさまざまな特徴と分類がありますが、その中から本書に関係する分類としてSQL(リレーショナルデータベース)、NoSQL、NewSQLについて詳しく見ていきましょう(本来、SQLはリレーショナルデータベースで利用されるクエリ言語を指しますが、ここでは対比のわかりやすさのためこのように記述しています)。

SQL(リレーショナルデータベース)

 数あるデータベースの中でもっとも利用者が多いと思われるのが、SQLが利用できるリレーショナルデータベースです。皆さんもMySQLやPostgreSQLといったオープンソースのリレーショナルデータベースを利用したことがあるのではないでしょうか。

 これらのデータベースはクラウドベンダーのマネージドサービスとして提供されていたり、パッケージ製品に組み込まれていたりと提供形態も豊富で、身近なデータベースです。また、商用製品としてもOracleSQLServerDb2といった、それらをつくったソフトウェア企業を代表するような製品が存在します。

 リレーショナルデータベースとSQLの歴史は古く、50年以上前から利用されています。リレーショナルデータベースとともに使われているのがクエリ言語のSQLです。

 それぞれのデータベースで利用できるSQLには細かい違いはありますが、多くのリレーショナルデータベースでSELECT, INSERT, UPDATE, DELETEなどによるデータの操作が可能になっています(SQLはANSIにより標準化されています(ISO/IEC 9075)が、細かいところで製品ごとの違いがあります。)。

 また、JavaにおけるJDBC(Javaからデータベースへ接続する際のAPI仕様を定めたもの。)のようなデータベース操作のための標準的なAPIやライブラリがあり、それらをベースとしたさまざまなシステムやアプリケーションがつくられています。

 リレーショナルデータベースの大きな特徴にACID(Atomic, Consistency, Isolation,Durability)と呼ばれるものがあります。簡単には下記のような特徴です。

  • Atomic(原子性):(複数の)処理がすべて正常に完了するか、またはすべて実行されないかのいずれかであること。半分実行されるといった中途半端な状態を許容しないこと
  • Consistency(一貫性):処理の前後で、あらかじめ定義されている制約条件を満たすこと。代表的なものに一意性制約があり、同じ値が複数存在しないという制約条件である
  • Isolation(独立性):処理が相互に影響しあわないこと。データベースでは同時に実行する処理が、お互いに影響を与えないことを指す
  • Durability(永続性):処理が完了したら、その結果が失われないこと。データベースではシステムに障害が発生しても確定した結果が失われない(耐障害性を持つ)こととして定義される

 簡単にいえば予期せぬ処理の中断があってもデータの一貫性を保ち、またデータベースの障害が起こってもデータが保存されていることを保証するという特徴です。これにより、アプリケーションはデータの操作を考えれば良く、データの保存にまつわるさまざまな課題はデータベース側に任せることができるようになっています。

 このようなデータベースの特性があるからこそ、デジタルな処理や業務で広く使われるようになりました。身の回りを見渡してみても、銀行振込や、アプリケーションを使ったネットショッピング、QRコードによるコンビニでの決済など、こういった特性が必要な処理であふれています。

 身の回りのこのような処理について、前述のACID特性がなかったらどのようなことになるか、またそういう特性なしで実装するとしたらどうなるかを考えてみるとおもしろいでしょう。

 リレーショナルデータベースは現在でも広く利用されており、さまざまな企業システムの基幹システムで利用されています。またSQLは事実上データ操作言語の標準になっており、多くのプログラミング言語の標準ライブラリでサポートされています。

 NewSQLでもリレーショナルベースとの互換性が重要なポイントとなっているように、データベース業界の中核をなす技術といえるでしょう。

NoSQL

 NoSQLは2000年代に入り、インターネットの普及とともに爆発的に増えたデータベースへのリクエストに対処できるように発達したスケーラブルなデータベースです。従来のリレーショナルデータベースは基本的に1台のサーバで動作するため、性能向上のためにはサーバを増強する必要がありました。NoSQLはサーバを増やすことで性能を向上させることができます。

 これらのデータベースの多くはSQLではなくシンプルなAPIを提供し、またリレーショナルデータベースにはない柔軟なデータ形式をサポートしていました。そのような特徴から、従来のリレーショナルデータベースとの比較でNoSQLと呼ばれるようになりました。

 NoSQLはリレーショナルデータベースのACIDの特徴を少し緩めたBASEというモデルを採用しています。サーバが分散している環境では、1つのサーバに書き込んだデータがほかのサーバにレプリケーションされるまでに少し時間がかかります。このレプリケーションの時間を待たずに以前のデータを返す、一貫性よりも可用性(応答性)を優先するモデルです。

 またサーバ間の負荷分散が自動化されているのも大きな特徴です。多数のサーバを扱う場合、それらのサーバにどのようにデータを配置するかが大きな問題になります。

 データに偏りがあれば特定のサーバに負荷が集中してしまい、多数のサーバを利用している意味がありません。データを持たないアプリケーションであればロードバランサーでリクエストを分散させることで負荷分散が可能です。しかし、データを持つデータベースでは、リクエストは必要なデータを持つサーバに送る必要があり単純ではありません。

 NoSQLではレプリケーションとシャーディングによりこの問題に対処しています。同じデータを複数台のサーバにコピーすることで、複数台のサーバで読み取りリクエストに対処できます。

 また、キーの値に応じて利用するサーバを分けることで、データがなるべく均等に分散配置されるようになっています。これらの処理は人の手を介さず、自動で行われます。サーバの数に増減があった場合も、適切に再配置が行われるようになっています。

 またNoSQLはSQLによらない独自性のあるデータモデル、APIを提供するのも特徴です。まとめてNoSQLと称されていますが、そのカテゴリの中にはさまざまな種類のデータベースがあります。

 一例を挙げるとMongoDBに代表されるドキュメント指向DBは、大きなJSONデータを保存して検索できることを特徴としています。このほかにも、グラフ形式のデータを扱うグラフDB、ベクトル形式のデータを扱うベクトルDBなどが存在します。

 NoSQLは商業的にも成功し、オープンソースのものも含め多くのNoSQLデータベースが生まれました。現在においても主要なデータベースのモデルの1つといえるでしょう。

NewSQL

 NoSQLのスケーラビリティの特徴と、リレーショナルデータベースの特徴を併せ持つのがNewSQLです。NoSQLと同様にスケーラビリティを持ちながら、SQLも利用でき、ACID特性も備えています。別々に進化していたデータベース技術の合流地点ともいえるでしょう。

 これらの新しいシステムはNoSQLやSQLに対してNewSQLと呼ばれていたり、Distributed SQLと呼ばれていたりします。日本ではNewSQLの呼称が主流なので、本書でもNewSQLの呼称を使います。

 NewSQLの大きな特徴としてNoSQL同様データの分散と再配置が自動化されており、サーバを増減することが簡単になっています。また、主系副系といったサーバの識別をユーザーが意識する必要もありません。実際多くのNewSQL、とくにクラウド上でマネージドサービスとして提供されているものでは、データベースの接続先は1つとなっています。

 NewSQLのもう1つの大きな特徴として、運用や障害対応の自動化があります。NewSQLは複数のサーバで運用し、さらにそれが増減することを前提としているため、障害が発生したときのフェイルオーバーやサーバの増減に伴うデータの移動といった運用がアーキテクチャに組み込まれています。

 また、処理性能や利用リソースに偏りが出ないようにするバランシングの機能を備えるものもあります。利用のたやすさだけではなく、運用のたやすさも意識したものとなっているといえます。

 つまり、NewSQLはNoSQLとSQL(リレーショナルデータベース)のいいとこどりを狙ったものといえます。システム的にはNoSQLのような分散データベースでありながら、ユーザーにはそれを意識させることなく、既存のリレーショナルデータベースのように利用できます。

 このようなNewSQLが近年活用されている背景には次の要因があるのではないかと筆者たちは考えています。

1. 企業におけるクラウド利用の増加

 スケーラビリティは基本的に従量課金であるクラウドの利用と非常に相性が良いです。企業のクラウド利用は近年ますます増加し、企業システムやアプリケーションも必要なときに必要なリソースを使うという柔軟性を前提に構築されることが多くなってきています。そのような流れの中で、データベースにもそのような柔軟性が求められるのは自然な流れです。

 一方で、既存のアプリケーションや開発部隊ではSQLを使った開発を前提としていることが多く、単純にスケーラビリティだけを目的にNoSQLを利用できない面もあります。多くの企業では長い歴史を持つリレーショナルデータベースに対応したツールや資産を持っており、スケーラビリティを持ちつつ既存ツールや資産、人的スキルを活用できるNewSQLへの潜在的なニーズがあります。

2. 設計・運用負担の軽減

 ミッションクリティカルなデータベースの運用は大変な作業です。とくにリレーショナルデータベースではデータベースのサイジングや障害時対応の設計、障害時対応やアップグレード時の夜間(オフピーク時間)作業などが負担になっていました。クラウド上のマネージドデータベースは運用操作が自動化されており、運用負担を軽減してくれますが、設計負担がなくなるわけではありません。

 NewSQLはこれらの運用の多くが自動化されています。従来のRDBMSと同様の利用感・インターフェイスを提供している点、スキルの転用が可能となっている点も、負担の軽減に役立っています。

3. 無停止運用の増加

 読者の皆さんが普段Webサービスを使っている中で、「土日メンテナンスのため使えません」や「メンテナンスのため夜間停止します」といった告知を受け取ることはもうほとんどないのではないでしょうか。クリティカルなアップデートやアプリケーションの更新などはサービスを中断して更新をかけることが一般的でしたが、現在ではサービスを止めることなしにそれらの更新を継続的に行っていくことが求められています。

 そういった意味で、データベースには耐障害性だけではなく、サービスの停止を伴わない継続運用性が求められるようになってきています。NewSQLの多くはローリングアップデートを通じて運用しながらの更新を可能としており、このようなニーズに対応しています。

特徴のまとめ

 これまで説明してきたSQL、NoSQL、NewSQLの特徴をまとめてみましょう。

SQL、NoSQL、NewSQLの特徴まとめ
*ここではアーキテクチャの特徴を表す意図で記載している。クラウド上で提供されているマネージドデータベースでは、データベースの種別を問わずスケールアップ・アウトの両方を可能とするものも存在する。

 これら3つの分類について説明してきましたが、注意としてはこれらの分類はトレードオフの選択であり、優劣ではないところに注意が必要です。NoSQLやNewSQLは後発なので良いように受け取られがちですが、SQLカテゴリでも新しいデータベースは登場しており、ハードウェアの進化によりNoSQL並のデータ量を扱える製品も存在します。

 NoSQLのカテゴリでもSQLライクなクエリ言語を利用できるものも存在しますし、独自APIによる超低レイテンシを売りにするものもあります。

 代表的な分類はこのようなものですが、どのようなシチュエーションにも対応できる、完璧なデータベースはまだ存在しません。自分が想定するユースケースに合うか、実際に検証してみることが重要です。

TiDB

 本書で利用するTiDBはオープンソースのNewSQLデータベースです。2015年にPingCAPによって開発され、その後オープンソースとして公開された、まだ新しいデータベースです。

 TiDBは、これまでに説明したようなスケーラブルでSQLが利用できるというNewSQLの特徴を備えています。またオープンソースの製品で、クラウド環境でなくともラップトップを含めたさまざまな環境で動作可能で簡単に実行が可能です。実際にさわってNewSQLを体験するには最適なデータベースといえます。

 TiDBの主要な特徴は次のとおりです。

  • MySQLとの高い互換性
    広く利用されているオープンソースのデータベースであるMySQLとの互換性を持ちます。この互換性によりMySQLで利用できるクライアントソフトウェアや、アプリケーションフレームワークなどが利用できます。本書でも、TiDBへアクセスする際にMySQLのクライアントソフトウェアであるMySQLクライアントを利用します。
  • 柔軟な実行環境
    TiDBは、分散環境を前提とするNewSQLですが、単独のPCやKubernetes環境でも、パブリッククラウド上でも動かすことができるようになっています。また、それぞれの環境に適した簡単なセットアップツールが存在しており、デプロイが非常に容易です。
  • オールインワン
    TiDBは本番運用に必要な操作を提供するCLIや、オブサーバビリティツール、またAPIなども標準で提供しています。本番稼働に必要なすべてをオールインワンで提供しているところも、ほかのデータベースにはないTiDBの魅力です。ユーザーフレンドリーなデータベースといえます。

 さて、このあとはTiDBを実際にインストールして、これまで説明してきたNewSQLのスケーラビリティや、耐障害性といった特徴を学んでいきます。本書ではTiDBをローカル環境で動作させるTiDB Playgroundという機能を利用します。

 これは1台で動作するTiDBですが、内部的には分散環境のTiDB同様のコンポーネントから構成されており、挙動はクラスターで動作するTiDBとほぼ同じです。TiDB自体の開発にも、筆者たちのようなソリューションアーキテクトの日常の検証作業にも利用されています。もちろん、読者の皆さんのように、これからNewSQLを学ぶ方の学習用途としても最適です。

わかばちゃんとつくって、壊して、直して学ぶ NewSQL入門
 

Amazon  SEshop  その他

 
わかばちゃんとつくって、壊して、直して学ぶ NewSQL入門
 

著者:関口匡稔、小板橋由誉、湊川あい
発売日:2025年7月16日(水)
定価:3,520円(本体3,200円+税10%)

本書について

大学生わかばちゃんのもとに、妖精「NewSQLさん」が現れた。「NewSQLは障害に強いって言うけど、どこまで壊せば動かなくなるんだろう?」さぁ、TiDBクラスターを壊しまくれ! もちろんリカバリも忘れずに。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
翔泳社の本連載記事一覧

もっと読む

この記事の著者

渡部 拓也(ワタナベ タクヤ)

 翔泳社マーケティング課。MarkeZine、CodeZine、EnterpriseZine、Biz/Zine、ほかにて翔泳社の本の紹介記事や著者インタビュー、たまにそれ以外も執筆しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21881 2025/07/23 07:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング