MySQLな人から見たMongoDBのデータの持ち方比較
Nodeでアプリ作ってて、DBどうしようか迷ってたら、どうもMongoDBが相性が良いらしいと言われているようなので調べてみた。
自分はMySQLしかほとんど触ったことがないので、MySQLと比較して特長をつかんでみる。
とりあえずはデータ構成の比較。
データの持ち方
MySQL | DB | テーブル | レコード |
---|---|---|---|
MongoDB | DB | コレクション | ドキュメント |
大きくは変わらないですね。
テーブルが「コレクション」、レコードが「ドキュメント」という位置づけになるようです。
定義
MySQL | いる |
---|---|
MongoDB | いらない |
MongoDBは、DB、テーブル、カラムのスキーマ定義はどれも不要です。
データの追加時(Mongoでの追加はsaveコマンド)に、
- 選択したDB
- 追加対象としたコレクション(MySQLで言うテーブル)
が無ければ、勝手に作ります。
例えば、DB「mydb」のコレクション「mytable」に値を保存するコマンド
MongoDBにもMySQLクライアント的なものがあり、このコマンドはその中で発行するものです。
これを発行した時点で、もし「mydb」が無ければ作り、また「mytable」が無ければ同じく作ります。
use mydb;
db.mytable.save({ name : "My Name", age : 1})