簡體   English   中英

將關系數據庫轉換為非關系數據庫的最佳實踐?

[英]Best practices for transforming a relational database to a non relational?

我有一個 MySQL 數據庫,我需要創建一個 Mongo 數據庫(我不關心保留任何數據)。

那么根據MySQL的關系表來設計結構(mongoose.Schema)有什么好的做法嗎?

例如,SQL 有一個表users和一個表courses關系為1:n ,我是否也應該在 MongoDB 中創建兩個 collections 或創建一個新的user collection user document字段courses: [] ?

模式定義應該由應用程序的用例驅動。

在什么條件下訪問和修改數據。 哪個是主導實體。

例如,當一個用戶被加載時,您是否也總是想知道該用戶的課程? 這將是嵌入的論據。

您能否在不知道所有用戶的情況下更新課程,例如更新課程名稱? 您想列出所有課程的概覽嗎? 這將是提取到自己的集合中的一個論據。

因此,對於此類遷移沒有通用指南,因為僅從模式定義中無法導出用例。

如果您不關心數據,最好的方法是從頭開始重新設計。

NoSQL 在許多方面與 RDBMS 不同,因此直接映射幾乎不會高效,並且在許多情況下根本不可能。

您需要回答自己的第一件事(並且可能在問題中提到)是為什么首先需要更改數據庫。 Mongo 可以比 SQL 更好地解決不同類型的問題,它們需要不同的數據模型。 它們都不是免費的,因此您需要了解權衡取舍。

您可以從非常簡單的規則開始:在 SQL 中,您在 model 中您的業務對象之后的數據並描述它們之間的關系,在 Mongo 中,您需要在查詢后響應您的 model 數據。 一旦你掌握了這個想法,它就會讓你提出可以回答的問題。

作為起點,可能值得閱讀https://www.mongodb.com/blog/post/building-with-patterns-a-summary

一個舊但仍然非常有用的https://www.mongodb.com/blog/post/6-rules-of-thumb-for-mongodb-schema-design-part-1請記住它是很久以前寫的mongo 沒有很多 v4+ 功能。 盡管如此,它還是通過簡單的示例描述了 mongo 數據建模的理念。從那時起,它並沒有太大變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM