見出し画像

Web Developer Roadmap 2021に則って勉強する~DB編 part4~

今週は連休なので時間があり,毎日程よく勉強ができているのでnoteも更新ができます😋
前回の記事はこちら

今回はロードマップを少しだけ進めます.順番的には,NoSQLやデータベースシステムの運用に関する内容になります.

backend-map-2021のコピー

規格として定められた標準SQLについては過去の記事で勉強しましたが,具体的なミドルウェアには触っていませんでした.今後の予定としては,MySQLの入門書を読んで,そちらで設定などの運用面の知識をカバーしていこうかなと考えています.ORMに関しては,どのみち最終的には何かしらのWebアプリフレームワークで開発の勉強をすることになる上,ORM単体で触って勉強するのも骨が折れそうなので,一旦はいいかなと思います.
今回は今後カバーする計画がないものの,ロードマップ上にあるのでやる必要があるNoSQLについて少しやっていこうと思います.ただし,業務でNoSQLを使う機会がほとんどないこともあり,ガッツリ勉強するより先に進めた方がいいのではないかと考え,周辺知識や各種ミドルウェアのチュートリアルの一部実施にとどめる方針でいきます.

以下,活動ログ的なものです.アウトプットと呼べるほど大した内容でもないので悪しからず🙏

NoSQLについて

まずはここから.NoSQLについてググったら誰もが辿り着くような情報のまとめですが...
NoSQLとは
Not only SQLの略称.ストリーミングサービスやトラッキング情報の送信といった大容量で高速なデータのやり取りが必要となっている昨今,RDBのミドウルウェアでは捌ききれなくなってきているという背景のもと話題になり始めている.RDBのいくつかの特徴が失われる代わりに.高速なデータの格納を可能にしている.
NoSQLの実現方法
Key-Value型: キーとそれに対応する値という形式で格納する.
ドキュメント指向型: JSONやXMLといったデータ構造で格納する.
有名なオープンソースプロジェクト
Redis: Key-Value型
MongoDB: ドキュメント指向型
他にもたくさんありますが,チュートリアルは上記の二つに絞ってやりました.
NoSQLのメリット
スキーマレスであり,RDBのようなカラムの制約を受けない柔軟性の高いデータを格納できる.
RDBのような結合処理やトランザクション機能といった一部の内容が使えなくなっているが,その分RDBよりも高速.

参考サイト

NoSQLを使ってみる

Redis
Key-Value型のミドルウェアとしてRedisを使ってみました.Redisはインメモリ型なので揮発性ですが,メモリに乗る限りはかなり高速なのは理解できます.
公式のチュートリアルがあったので,こちらをかいつまんで少し触ってみました.

ホストマシンにインストールしたくなかったのでDockerのイメージを落としてきてコンテナ内で触りました.DockerでのRedisについては以下のサイトを参考にしました(コンテナを立てて起動するだけなんですけどね笑).

チュートリアルではredis-cliを使って基本的なAPIを学びました.このredis-cliはコマンドの補完が効くという優れもの.後ほど紹介するMongoDBより簡単なコマンドでデータ操作ができますが,複雑なデータ構造になるとコマンドからデータ構造を読み解くのが難しくなりそうだなと思いました.
Redisがどんな場面で役に立つのか少しだけ調べてみました.

公式チュートリアルやこの事例紹介を見る感じ,比較的単純なデータ構造ではあるが大規模のデータの格納に向いていそうだなと思います.キューを使ったシステムを作るのであればいいかもしれませんね.

MongoDB
ドキュメント指向型のミドルウェアとしてMongoDBを使ってみました.名前自体は随分前から知っていましたが,まさかNoSQLだとは思っていませんでした.ドキュメント指向が一体なんなのかよくわかっていなかったので,二種類のNoSQLミドルウェアを触ってみる必要がありました.
チュートリアルとして,結構有名(?)な参考書物として「MongoDBの薄い本」なるものがあったので,そちらを読みながら勉強しました.基本的な内容の紹介にはなっていますが,どんな場面でMongoDBが使えるのかについても紹介があり,勉強になりました.

こちらもDockerコンテナを立てて触りました.コマンドはJavaScriptで実装されているようで,コマンドというよりも,JSのメソッドを直書きして呼ぶような感じでした.簡単なコマンドだと少しばかり冗長になりそうです.ドキュメント(RDBでいうところのレコードに近い)の形式はJSONなので,なんとなくですがドキュメント指向について感覚は掴めたかなと思います.

感想

感想というほどでもないですが...
NoSQLについて紹介している記事やドキュメントでよく書かれている内容ではありますが,NoSQLとSQLは似て非なるものであって,得意分野がだいぶ違うので,今後SQLにとって変わる技術,という捉え方は誤っているようですね.
業務でそこそこの速度でデータ格納をしている場面でもRDBを使っているのですが,そのデータテーブルを結合して確認をするケースはほとんどないので,もしかしたらNoSQLの方が向いているのかなぁと思いました.

いいなと思ったら応援しよう!