NoSQL(Not only SQL)とは



※以下書籍はKindle Unlimitedで読めます。

■LinuxとUNIXの違いをわかりやすく解説しています。
※サーバーエンジニアは知っておくべき内容です。

【初心者向け】これだけでLinuxとUNIXの違いがわかる!


■ロードバランサー(LB)をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでSNMPがわかる!SNMPの使い方


■SNMPの使い方をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでロードバランサーがわかる!


■ChatGPTの使い方をわかりやすく解説しています。

【初心者向け】これだけでわかる!ChatGPTの使い方




■動画でわかりやすく解説してます。








では、今日も授業を始める。今日のテーマはデータベースの続きで、NoSQLだ。




DBって覚えること多いよね。




NoSQL(Not only SQL)について、みていこう。




NoSQLって何?




NoSQL(Not only SQL)データベースは、 RDB(リレーショナルデータベース)ではないデータベースだ。 今まで出てきたORACLEデータベースや、PostgreSQL、MS SQL Server、MySQL、MariaDBなどは、 すべてRDBだ。NoSQLはRDBではない。




NoSQLデータベースのメリットは、サーバ台数を増やして簡単にスケールできることだ。 NoSQLはビッグデータで利用される。




ビッグデータのような大量データを扱うときは、RDBではなくて、NoSQLが利用されるってことね。




うむ。GoogleやAmazon、Facebookなどの大量データを扱う企業でNoSQLが利用されているシステムがある。




NoSQLは処理も非常に高速だ。デメリットとしては、トランザクション機能を持っていないので、 データの一貫性がRDBと比較すると弱い。




トランザクションって何!?




トランザクションは、データ更新や取り消しを管理する処理のことだ。 例えば、口座から1000円を振り込む場合、処理的には自分の口座から1000円を引き落として、1000円を振り込むことになる。 これらの一連の処理(2つのUPDATE文)が、同時に実行されて結果がデータベースへ反映される必要がある。 このように複数のSQL文を1つの処理として実行してまとめてデータベースへ反映することをトランザクションという。




自分の口座から1000円を引き落としされて、振り込めていない状態はおかしいもんね。




一連の処理がうまくいったときにコミット(COMMIT)が実行されて、データベースに結果が反映される。 もし、トランザクションの途中でエラーが発生した場合はロールバック(ROLLBACK)が実行されて、データベースには結果が反映されないようになっている。




コミットもしくはロールバックが実行されてトランザクションが終了するってことね。




うむ。RDBはトランザクションがあるからデータ一貫性が強く、NoSQLにはトランザクションがないからデータ一貫性が弱い。




NoSQLには、キーバリュー型ドキュメント型グラフ型カラム指向型の4つがある。 キーバリュー(Key-Value)型は、キーに対して、値が決まるNoSQLデータベースで、 memcached、Redis、Riak、アマゾンのDynamoなどがある。




例えば、memcachedはサーバ上のメモリにデータを保存するため、検索が速いが、揮発性だ。




揮発性って何?




データが揮発性というのは、停止するとデータが消えてしまうという意味だ。 memcachedのサービスを停止すると、memcachedのデータがすべて消えてしまう。




memcachedはデータをメモリ上に持っているから、サービスを停止しただけでデータが消えちゃうのか~。




でも、メモリにデータを持つということは、非常に処理が速いというメリットがある。 例えば、memcachedは、ユーザのセッション情報などを保存したりするケースで利用されたりする。




Redisっていうのは?




Redisはmemcachedに似ていて、メモリ上にデータを保存しているが、 Redisには一定期間ごとにスナップショットを取って、ディスクにデータを書き出す機能がある。 このスナップショット機能により、データの永続性を実現している。




Redisって、スゴイね。




次にカラム指向型はカラム(列)単位で処理を行うDBだ。例えば、Cassandra、Hbase、GoogleのBigtableなどがある。




グラフ型は、ノードやリレーションシップ、プロパティをもとに、データのつながりを管理するDBで、 Facebookのユーザー同士のつながりはグラフ型のNoSQLが利用されている。 グラフ型のNoSQLには、Neo4jやInfiniteGraphなどがある。




ドキュメント型はJSONやXMLのような自由な形式のデータを保存できる。 ドキュメント型には、MongoDBCouchDBなどがある。




では、今日はここまで。




は~い



今回のまとめ

1.NoSQLはRDBではないデータベース

2.NoSQLはNot only SQL

3.NoSQLはサーバを増やして簡単にスケールアウトできる

4.NoSQLはビッグデータで利用

5.NoSQLはトランザクション機能がない

6.NoSQLはデータの一貫性がRDBと比較すると弱い

7.トランザクションはコミットもしくはロールバックを実行

8.NoSQLはキーバリュー型、ドキュメント型、グラフ型、カラム指向型がある

9.キーバリュー型はMemcached、Redis、Riak、Dynamo

10.memcachedは検索が速いが揮発性

11.Redisは不揮発性

12.カラム指向型はCassandra、Hbase、Bigtable

13.グラフ型はNeo4j、InfiniteGraph

14.ドキュメント型はMongoDB、CouchDB



 次の章へ