강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Back-end

mongoDB基礎から実務まで(feat. Node.js)

mongoDB、NoSQLは最近多く聞こえますが、まだ見知らぬデータベースですか?リレーショナルデータベース(RDS / SQL)のように使用していませんか?いくら良い技術も正しく使用しないと逆効果が発生します。だからモンゴディビの使用失敗事例もしばしば見えます。このレッスンでは、mongoDBをできるだけmongoDBで使用できるように、基本概念から実務ノウハウまで教えていきます。

  • sihoon
MongoDB
REST API
Node.js
AWS
JavaScript

学習した受講者のレビュー

こんなことが学べます

  • mongoDBを正しく活用するバックエンド開発

  • Node.js、ExpressによるREST APIの開発

  • 非同期(async)プログラミング

  • Index、nestingによるReadパフォーマンスの最大化

  • ACID Transaction

  • AWS lightsailへのNode.jsサーバーのデプロイ

  • mongoDB Atlasクラウドマネージドサービス

NoSQLベースのデータベースの中で最も愛されているモンゴルDB!
モンゴルDB蒸し活用法をお知らせします。 😎

トピック紹介📝

mongoDBの名前はHumongous、「巨大な」から名前をつけました。ビッグデータキーワードが生じ始めたインターネットブーム以来、2009年に発売されたNoSQLベースのデータベースです。データベースはサービス開発の中心的な基盤となります。 mongoDBとは異なり、私たちに慣れているリレーショナルデータベース(MySQL、PostgreSQL)はすでに20年以上の古い技術です。常に新しいプログラミング言語と技術が誕生するプログラミングエコシステムですが、このような変化が少ない分野があるというのが不思議です。データベースはそれほど重要で保守的な技術です。データベースが変わると、その上に作られるバックエンドはもちろん、フロントエンドにも影響を与えることができます。そういうわけで、多少不慣れな技術であるモンゴディビに関する様々な疑問点も生じ、失敗適用事例もしばしば見られます。

  • モンゴディビは状況に応じて使うべきですか?
  • e-commerceは無条件RDSではないか。
  • 初めにすばやく簡単に開発するのは良いですが、後で行くとリレーショナルデータベースが良いでしょうか?
  • JOINもサポートしていないデータベースとは..?

どうやら比較的新生技術であり、ノウハウが十分に知られていないために発生した問題だと思います。 mongoDBはリレーショナルのように汎用的に使用でき、e-commerceも当然mongoDBとして開発できます(経験者です)。そして、それを正しく使用すると、大規模なトラフィックが発生したときにリレーショナルデータベースよりもはるかに効率的です。

そもそも適用失敗事例が生じる原因は何でしょうか? mongoDBの哲学を理解していないからです。簡単な使い方だけ勉強しては足りません。そして何よりリレーショナルデータベースのように近づいてはいけません。 mongoDBがアクセスする問題解決方法は根本的に他の部分が多いです。これらの特性をよく理解し、mongoDBを使用すると、mongoDBは利点が本当にたくさんあるデータベースです。

なぜ学ばなければならないのか✒️

  1. データベースがトラフィックのボトルネックになりやすいのですが、mongoDBはこのスケーラビリティの問題を根本的に解決できます。
  2. バックエンド開発を一緒に学びながらmongoDBを正しく学習できます。バックエンド開発とデータベースは一体です!
  3. Web開発で通信するデータはほとんどJSON形式です。 mongoDBが保存するデータ型はJSON(BSON)です。そのため、途中でバックエンドでデータ変換をしたり、ORMを使用する必要がほとんどなくなります。それだけ進入障壁が低くなることもあります。
  4. 汎用的に使用できるデータベースです。 NoSQLデータベースの特性上、ACID Transactionがサポートされていない場合がほとんどです。 mongoDBはNoSQLの水平的な拡張特性を持ちながらバージョン4.0からACID Transactionをサポートしています。
  5. 講義の初めに非同期プログラミングをつかんで進んでいきます。バックエンドがデータベースと効率的に通信するための重要な概念です。

この講義で学ぶこと✏️

  1. mongoDBの基本的な使い方 - CRUD
  2. mongoDB Atlas - 管理クラウドデータベースのデプロイ
  3. 非同期(async)プログラミングでバックエンド効率を最大化
  4. ExpressフレームワークでREST APIを作成する
  5. 関連データを効率的に読み取る方法
  6. 子文書を親文書に適切に埋め込んで読み取りパフォーマンスを最大化する
  7. Indexを適用してナビゲーションパフォーマンスを最大化
  8. トランザクション(Multi Document Transaction)を活用して一貫してデータを管理する
  9. AWS lightsail にバックエンドサーバーをデプロイする
  10. リレーショナルデータベースとmongoDBの比較

以下は講義で使用されるいくつかの資料です:)

ここで扱う技術 🧰

mongoDB、Node.js、Javascript、Postman、AWS、mongoDB Atlas

予想される質問 Q&A 🙋🏻‍♂️

Q. Node.js(Javascript) 開発者のための講義ですか?
A. この講義はmongoDB講義です。 Node.jsはバックエンド開発者がmongoDBを正しく活用する全体的な流れを示すための手段です。そのため、他の言語でバックエンドの開発をしている方も受講できます。 Node.jsに関連する部分は、一般的に使用される基本的な概念(REST API、非同期プログラミング)です。概念をよく理解すれば、mongoDBをどのような開発環境でもよく使うことができるでしょう:)

Q. バックエンド(Node.js)を一緒に扱う理由はありますか?
A. このレッスンでは、バックエンド開発者がmongoDBデータベースを正しく設計して使用する方法を教えています。それで、講義の初めにデータベースを正しく活用できるように、基本的なバックエンド開発を一緒に教えましょう。そして、この講義はDevOps講義ではありません。データベースをどのようにインストールし、レプリカセット、シェルディングをどのように構築して管理するかを教えていません。代わりに、これらのDevOpsゾーンを自動化する管理クラウドサービス、mongoDB Atlasを使用します。

Q. MongoDB Aggregateも学びますか?

A. 今回の講義では、「一般的な」バックエンド開発でモンゴディビをモンゴディビスによく活用する方法に焦点を当てました。呼び出し頻度の高い一般的なAPIでAggregateを使用すると、Diveに負荷がかかる可能性があるため、お勧めできません。簡単に考えると、Aggregateをよく使うようになればモンゴルディビスに使用することができず、リレーショナルディビのように使用することになると見られます。したがって、このレッスンではAggregate関連のコンテンツを含めませんでした。 Aggregateなしでモンゴディビを正しく活用する方法を紹介します!だからといってAggregateが悪いということは絶対ではありません。使用用途が別にあるだけです。統計を作成したり、大量のデータ処理など、データエンジニアリングの分野で非常に強力なツールです。一般的なAPIと比較すると、これらのデータエンジニアリング処理は呼び出し頻度がはるかに少なく、応答速度が長くかかってもかなり関係がないという特徴を持っています。たとえば、四半期ごとに売上状況を抽出したい場合は、四半期に一度ずつアグリゲート配置を回して結果値を保存しておいたと結果値を素早く呼び出せばよいでしょう。今後、MongoDBベースのData Engineer講義も制作する予定です。この時、MongoDB Aggregateはもちろん、MongoDB Data Lakeでビッグデータ管理、MongoDB Chartsでデータ可視化まで取り上げる予定です!

Q. この講義を始めるきっかけを紹介してください。
A. 私は非専攻者出身です。オンラインで散らばった破片の資料を見て分析し、適用しながら学びました。このプロセスを繰り返すと、概念が抽象化され、整理されます。ここで言う「抽象化」とは本当に重要な概念です。開発をするときにサービスが戻るように、単純な機能の実装だけができます。しかし、「抽象化」がうまくいった開発者は、「うまく動作する」、「拡張性のある」サービスを作ることができます。他の表現では、Whyをよく理解している開発者とも言えるでしょう。ところが、比較的最新の技術であるほど、コミュニティの前番作でWhyに対する理解度が低下します。それで、比較的見知らぬデータベースであるmongoDBをテーマに講義を制作してみました。 Whyをよく理解し、良いサービスをたくさん作ってください!

こんな方に
おすすめです

学習対象は
誰でしょう?

  • mongoDBを正しく使ってみたい人

  • バックエンド開発に入門したい人

  • 拡張性の高いバックエンドとデータベースを構築したい人

前提知識、
必要でしょうか?

  • Javascript基礎文法(または基本的なプログラミング知識)

こんにちは
です。

2,686

受講生

182

受講レビュー

261

回答

4.7

講座評価

3

講座

현재 공동창업한 작은 스타트업 Ninjalerts에서 CTO역할로 일하고 있습니다. Ninjalerts는 이더리움 블록체인 데이터를 기반으로 NFT 거래 정보들을 실시간으로 알려주는 서비스에요!

전에 만나씨이에이에서 개발 팀장으로 있었어요. 시작은 기획자였는데 개발자가 부족한 탓에 외주를 맡기려다가 직접 개발할 기회가 생기면서 운 좋게 개발자로 전향했어요. 이후 자사몰을 자체 개발하면서 이커머스 개발팀장을 맡았어요.

온라인에 나온 다양한 좋은 자료들 덕분에 빠르게 성장할 수 있었어요. 제 노하우가 여러분들에게도 도움이 되길 바랍니다 :) Linkedin 프로필

カリキュラム

全体

112件 ∙ (11時間 56分)

講座掲載日: 
最終更新日: 

受講レビュー

全体

89件

4.7

89件の受講レビュー

  • dongqsarang님의 프로필 이미지
    dongqsarang

    受講レビュー 1

    平均評価 4.0

    4

    99% 受講後に作成

    nodejs+mongodb로 app개발하시는 개발자들에게 강추합니다. 알기 쉬운 설명으로 복잡한 부분도 잘 가르쳐주고 있어요. 두가지 단점이 보이는데 한가지는 중간중간에 실수하시고 그거 찾는데 시간이 많이 가는 부분들이 있는데 그런부분들 편집되면 더 좋을거 같아요. 두번째는 실습화면이 너무 작아서 따라가기가 불편합니다. 좀더 zoom in을 통해서 실습화면을 확대해서 찍어주셨으면 하는 아쉬움이 있네요. 컨텐츠 자체로는 VERY GOOD입니다. 감사합니다.

    • 윤병록님의 프로필 이미지
      윤병록

      受講レビュー 2

      平均評価 5.0

      5

      69% 受講後に作成

      5년차 자바 개발에서 노드몽고DB로 전향하려고 공부중이였는데 많은 도움이 되었습니다. 많은 자료 인강을 통해 공부해왔는데 이자료가 가장 으뜸이였습니다. 앞으로도 좋은 강의 부탁드리겠습니다.

      • ㅌㅇ님의 프로필 이미지
        ㅌㅇ

        受講レビュー 13

        平均評価 4.7

        5

        95% 受講後に作成

        이해 하기 쉽게 잘 가르치십니다ㅎㅎ 다만, 디비 개념이 아에 없으면 중간에 멍해질 때 있음ㅎㅎ 추천 !

        • 신론님의 프로필 이미지
          신론

          受講レビュー 1

          平均評価 4.0

          4

          82% 受講後に作成

          강의는 정말 좋습니다. 근데 한가지 아쉬운 점은 화면 크기가 너무 작아 코드를 보기가 너무 힘들었어요. 화면 사이즈를 좀 키웠으면 훨씬 좋은 강의가 되었을 것 같습니다. 다음 강의는 화면을 학생들 위주에 맞게 키워서 만들어 주시면 감사하겠습니다.

          • 김시훈 (도도소프트)
            知識共有者

            신론님 안녕하세요 :) 화면 크기 때문에 불편하셨죠. 첫 강의라 미숙한점이 많네요. 다음 강의 그리고 몽고 강의 개선할 때 화면 크기 꼭 조절해서 녹음하도록 할게요!

        • kookdong.kim님의 프로필 이미지
          kookdong.kim

          受講レビュー 1

          平均評価 5.0

          5

          99% 受講後に作成

          기본기 익히기 매우 좋음

          期間限定セール

          ¥57,750

          25%

          ¥9,036

          sihoonの他の講座

          知識共有者の他の講座を見てみましょう!

          似ている講座

          同じ分野の他の講座を見てみましょう!