データベース基礎知識からCockroachDBまで

Blog Single

今回はDBの種類についてまとめたので参考になればと思います。

RDBMS

良く名前を聞くものだと、Oracle/MySQL/PostgreSQL…この辺りのDBはRDBMS = “リレーショナル・データベース“と呼ばれている物で、データベースにスキーマ(構造の定義)を持っているのが特徴です。スキーマを持っているという事は、データの型等が事前に定義されていると理解してもらえば分かりやすいでしょうか。
このようにデータベースに構造を持っているので、入っているデータは定義された物と保証され、管理を必要とするデータの保存に広く使われています。

NoSQL

ならば全てのデータをRDBMSで管理すれば良い、という訳もなく。RDBMSにはスキーマを持っているという最大のメリットがある反面、定義されたデータ以外入れる事ができず、結果的にI/Oの速度が遅いです。
戻す場所が決まっている本棚みたいなものですかね。
これまでのシステムは、管理目的で使用する為のデータが多かったので、RDBMSで事足りていましたが、昨今チャットなどの投稿データを資産として管理する事も増えてきました。
Twitterは毎秒10万件ものデータを捌いているとも言われておりますが、このような膨大なI/OにRDBMSでは耐えられない!コストがかかってしまう!…という事でNoSQLの登場です。

LINEやTwitterなどの投稿データを考えると、タイトルと内容と書いた人と…そんなに複雑に他のテーブルと連携する必要はない事が分かると思います。
このように、構造 < 速度 に重点が置かれたデータの管理にはスキーマを持たないNoSQLが活躍します。NoSQLでは mongoDB/HBase/cassandra が有名ですがその他にも Redis / memcached といった物も存在します。
主にキー・バリューの形で管理されており、mongoDBではJSON形式で保存されております。

NewSQL

RDBMSとNoSQLで大抵のシステムは十分なのですが、RDBMSにはなくてNoSQLが得意としている分野がもう一つあります。それが“シャーディング“です。
シャーディングとは一つのサーバで管理しているDBを複数のサーバで管理する事で、対応しているDBを“分散型DB”とも呼びます。メリットとしてデータへのアクセス負荷が複数のDBに分散され、増やした分だけ負荷は分散されます。しかし複数のサーバで一つのDBとして振る舞う必要があるので、技術的にもかなり高度です。
技術的に高度と言っても、整理整頓が厳しいDBと、なんでも入れたれ!なDBだったら、分散させるのは後者の方が楽ですよね。

しかし、昨今そんなDB界に風穴を開け始めているのが“CockroachDB”!
NewSQLという分類になります。元Googleのエンジニアで創業しているそうで、かなり開発も充実じております。

CockroachDB

CockroachDBはRDBMSとNoSQLの良いとこどりで、分散型キーバリューであると同時に構造を持った夢のDBなのです。ちょっと何言ってるか分からないかもしれませんが。

よければ以下公式サイトです。
Cockroach LABS

Posted by SakaiYasuhiro
PHP,NodeJS,Reactを主に使っているが、デザイン周りもこなす何でも屋。 自称: 可能性の獣

Other Posts: