HEROZ Tech Blog

日本将棋連盟公認「将棋ウォーズ」や、AIを活用したシステム企画・開発を行う、AI企業HEROZの公式テックブログです。

NoSQL(mongoDB) 導入ガイド

はじめに

NoSQL の利用を促進したいという意識のもとこの記事を作成しました。 今迄、数多くの案件に関わってきましたが、DB といえば大体 RDB でした。NoSQL を扱っている案件もあるのですが数少ないです。 NoSQL にしておけばこんなに苦労することはなかったんだろうなというケースも多々あったので、とりあえず使い慣れた RDB を使うといった風潮に異を唱えたく思いました。 ロールの多様化によって DB に触れる機会があまりないエンジニアも増えてきた昨今、利用促進には情報発信したり説得材料を作るのが肝要だと思います。ビギナーでも手軽に試せるクイックスタート、どういった局面で利用すべきかといったガイドライン、現実に発生し得る要求に対処できるようなケーススタディなどを書いたブログ記事を作成することで、その一助とできればと願います。

環境構築

GitHub リポジトリに本記事で扱う環境やソースコードを全て格納しています。

Docker(docker-compose)を利用できる環境であれば、コマンド一つで環境を構築できます。

docker-compose up -d

コマンドを実行すると以下の 3 つのコンテナが起動します。

  • backend
    • リポジトリに配置しているファイルが/usr/src/app ディレクトリにマウントされます
    • Python(Jupyter)を実行できる環境です。
    • VSCode などでリモートログインして利用してください。
  • mongo
    • mongo DB 本体です。
    • ユーザーやパスワードなどは docker-compose.yml に書いてあります。
  • mongo-express
    • mongo DB をブラウザの GUI でメンテナンスできるツールです。
    • ブラウザでこのリンクを開いてください。

導入

pymongoでmongo DBを操作します。接続と動作確認を行うJupyterスクリプトを以下にGistで貼り付けます。

hello mongo

ケーススタディ: ユーザー情報を管理する

階層構造データの基本的なCRUD操作をしてみます。

mongo case study manage user info

おわりに

今回は導入部分の説明のみとしました。今後、より実践的な内容にも踏み込んでいきたいと思っています。