day08


データベース#データベース#


複数の人が共有して使用することを目的としたシステム化された統合、管理されたデータの集合.これは、通常、DBMS(データベース管理システム)によって制御される.接続されたアプリケーションとともに、データとDBMSを一緒に置くことをデータベースシステムと呼びます.

リレーショナル・データベースとドキュメント・データベース?


代表的な関係型はMySQL、文書型はMongoDBです.二人はまず用語から違います.

データベースを格納するデータを作成する方法で区分し、リレーショナル型はリレーショナルを重視し、重複データを回避するために複数のテーブルに分けて格納します.IDはIDであり、EMAILはEMAILのみを格納する.逆に、ドキュメント型では、異なる構造のデータを同じセットに追加できます.それぞれメリットとデメリットがあり、状況に応じて使用します.

もちろん、文法も違います。



+今回はMongoDBを使います.

MongoDB/MongoDB Compass


MongoDBは、ドキュメントストレージ向けのNoSQLデータベースシステムです.NoSQLは、SQLではなく他のデータベース・システムを意味します.(または非関係型sqlを表す.)
mongodyはデータをdocumentと呼び,これらのデータの集合をcollectionと呼ぶ.パターン制約はなく、各ドキュメントはBSON形式で格納されます.したがって、JavaScriptベースのnodejsと互換性があります.mysqlも使えます.

特長

  • にはJoinがないので、Joinを避けるためにデータを構造化する必要があります.
  • は、複数のクエリー文(フィルタ、収集、ソート、正規表現など)
  • をサポートします.
  • 管理が容易
  • モードレスデータベースを使用して迅速に開発します.フィールドの追加または削除は非常に簡単になりました.
  • 容易な水平拡張
  • インデックス作成
  • MongoDB Compassはmongodb用のGUIデータ可視化ナビゲーションツールである.ここでは、データベースのクエリーと変更を簡単に行うことができます.

    Docker-Compose


    また、アプリケーションを定義して複数のコンテナを実行するツールでもあります。yamlファイルを複数のドッキングステーションの内部プロパティに設定し、ドッキングステーションを一度にデプロイとして実行するように実行できます。


    docker-compose.yaml(yml)ファイルにフォーマットで記述します.どのファイルに接続してポートを転送するかを指定できます.
  • コンテキスト:Dockerfileのディレクトリパスまたはgit repoを含むurl
  • Dockerfile:
  • ファイルの置換を指定します.

    Docker-Compose CLI

    docker-compose build//image빌드
    docker-compose up//container실행

    Mongoose/MongoDB


    Mongooseはnodejsとmongodbに対するオブジェクトデータマッピング(ODM)ライブラリであり、互換性のないjsとmongodbデータをマッピングすることができ、crudの実現を簡素化することができる.
    木の枝を乾かす
    yarn add mongoose
    ファイルにインポートします.
    モデルを定義します.
    import mongoose from 'mongoose'
    
    const userSchema = new mongoose.Schema({
    	name: String,
        phone: String,
        password: String
    })
    export const User = mongoose.model('User', userSchema)
    //model(해당 콜렉션의 단수적 표현, 적용할 모델)

    使用可能なデータ型



    mongodbをバックエンドapiに接続する方法
    //api파일에
    mongoose.connect("mongodb://my_db:27017/study")
    mongooseの公式ファイルには、使用可能なコマンドがいくつか表示されます.
    たとえば、データの取得方法
    // Using async/await
    const arr = await Movie.find({ year: { $gte: 1980, $lte: 1989 } });
    
    // Using callbacks
    Movie.find({ year: { $gte: 1980, $lte: 1989 } }, function(err, arr) {});

    Nodemon/Volumes


    先ほど書いたようにdocker-composeで作業すればNordemon Refresh問題が確認できます.なぜならdockerではnodemonが働かないからです.

    CMDセクションをドッキングファイルにパッケージします.jsonのスクリプト部分で作成された方法で書き込みます.