比较一下 关系型 vs 文档性

下面是第一张幻灯片。

各自的特点 de

リレーショナルDB(MySQL)ドキュメントDB(MongoDB)データ構造テーブルという表計算ソフトのような構造 正規化という手法を用いて適度に重複が発生しない構造(テーブル)を事前に定義する 正規化は1-3段階まであり厳密な設計思想が存在するJSON形式 スキーマレスなので事前に全ての定義をする必要はない 緩やかな設計思想で、JSONのモデリングを行う 主キーは自動採番で後からインデックスの設定もできる 遅いけどコレクション結合もできる処理速度インデックスの効率に依存する 細かいメモリチューニングができる HDDに書き込むオーバーヘッドがあるインデックスはRDB同様に利用できる インメモリで動くためオーバーヘッドが少なく高速 データの集計などの単純計算はRDBよりも高速にできる特性☆ACID特性という原則を守る事ができる ※ とても厳格なので金融や基幹システムなどに向いている☆Base特性という原則を守る事ができる ※ ゲームのセーブデータや粒度の細かい操作ログ記録などに向いている分散性NDBクラスタという特殊なテーブルを使う以外には基本的にレプリケーションを利用した読み込み分散のみシャーディングとい機能を利用して書き込み分散ができる

去中心化架构

Screen Shot 2022-12-27 at 8.24.40.png

请参阅此处,暂时跳过了MongoDB副本集的讨论。

SQL语法的比较

由于没有模式(schema),所以不需要设计表格,并且对于列长度的更改和添加/删除可以更加容易。然而,在提取数据时,如果未正确处理对应关系,容易出现空引用错误。请注意谨慎使用。
MySQLMongoDB1. スキーマ定義
create table customers (
id number(10) not null primary key,
name varchar(40) not null,
tell varchar(40) not null,
)

2. データの投入
insert into customers(id, name, tell) values(null, ‘test’, ‘080-0000-0000);’

3. カラムを増やす
alter table customers add address column varchar(255);

4. データの投入
insert into customers(id, name, tell) values(null, ‘test’, ‘080-0000-0000);’1. コレクション定義
db.createCollection( “customers”)

2. データを入れる
db.customers.insert([{name: ‘test’, tell: ‘080-0000-0000’}])

3. カラムを増やしてデータを入れる
db.customers.insert([{name: ‘test’, tell: ‘080-0000-0000’,address:’Tokyo’}])

使用实例

MySQLMongoDB□ECサイトなどの商品管理
重複なく設計されたマスタ系のデータテーブルを保管して参照する
□銀行システム
厳格なトランザクションの下で、入金、出金、振り込みなどの操作を行わなければならない□大量のログ保管
ヒートマップデータやアプリ操作ログなどの保管や統計的集計
□ゲームのセーブデータ
特定個人のプレイデータで厳密排他制御の必要性がない

不使用Rails的架构示例(MongoDB)

マイクロサービスで情報の蓄積閲覧にはクライアントツールを使う☆例: 視聴ログなどの蓄積にマイクロサービスを利用する
■AWS
MongoDB Atlas serverless architecture
Awsを利用したマイクロサービスのアーキテクチャ

■Atlas
Microservices with MongoDB Atlas
MongoDBの提供するマネージドサービス☆例: 蓄積されたデータの閲覧ツールを実装せずに閲覧する
■ Studio
Studio 3T(GUI client)
MySQLだとnavicatというツールがあるがそれと同じもので
クエリさえ分かればデータが引き出せるというもの
■HumongouS.io
HumongouS.io(Web GUI )
上記のWeb版

我們希望積極地使用和發揮新功能的作用。

地理编码

MySQLMongoDBMySQLにも空間データを扱う型が存在します、PointやPolygonなどの複雑なGeometoryもサポートしています
空間データ型
緯度経度MongoDBでは、複雑なGeometry(点、直線、多角形)をlon/latで扱うものと、2Dの座標空間を扱えます(点、四角、多角形、円、Sphere)
球面空間でのクエリもサポートしています
Geospatial Queries
由于都可以处理经纬度空间数据,因此可以搜索附近的设施等内容。

图形表示

MySQL(MariaDB community edition)MongoDBOSS版のMariaDBだとデータベースエンジンレベルでの用意があるが
AWSのAuroraではサポートしていないそう
SQL Server Graph Features

MongoDB as a Graph Databaseを確認すると、ノード(頂点)、エッジ(リレーション)、プロパティ、ラベルを基本としてグラフ型のオブジェクトとその検索をサポートしている
graphLookupという、agrreegation piplineの機能を使うだけで簡単に利用できる
別途GraphQLなどのデータベースを用意しなくても利用できるようので使い勝手がいい