Rumah pangkalan data tutorial mysql MongoDB数据库设计中6条重要经验法则 Part 3

MongoDB数据库设计中6条重要经验法则 Part 3

Jun 07, 2016 pm 03:36 PM
mongodb pangkalan data pengalaman reka bentuk penting

这是系列的最后一部分。在第一部分里,我介绍了三种针对“一对多 ”关系建模的基础方案。在第二部分中,我介绍了对基础方案的扩展:双向关联和反范式化。 反范式可以让你避免一些应用层级别的join,但是这也会让更新变的更复杂,开销更大。不过冗余那些读取

这是系列的最后一部分。在第一部分里,我介绍了三种针对“一对多 ”关系建模的基础方案。在第二部分中,我介绍了对基础方案的扩展:双向关联和反范式化。

 

反范式可以让你避免一些应用层级别的join,但是这也会让更新变的更复杂,开销更大。不过冗余那些读取频率远远大于更新频率的字段还是值得的。

 

如果你还没有读过前两部分,欢迎一览。

 

让我们回顾下这些方案

 

你可以采取内嵌,或者建立one端或者N端的引用,也可以三者兼而有之。

 

你可以在one端或者N端冗余多个字段

 

下面这些是你需要谨记的:

 

1、优先考虑内嵌,除非有什么迫不得已的原因。

 

2、需要单独访问一个对象,那这个对象就不适合被内嵌到其他对象中。

 

3、数组不应该无限制增长。如果many端有数百个文档对象就不要去内嵌他们可以采用引用ObjectID的方案;如果有数千个文档对象,那么就不要内嵌ObjectID的数组。该采取哪些方案取决于数组的大小。

 

4、不要害怕应用层级别的join:如果索引建的正确并且通过投影条件(第二部分提及)限制返回的结果,那么应用层级别的join并不会比关系数据库中join开销大多少。

 

5、在进行反范式设计时请先确认读写比例。一个几乎不更改只是读取的字段才适合冗余到其他对象中。

 

6、在mongodb中如何对你的数据建模,取决于你的应用程序如何去访问它们。数据的结构要去适应你的程序的读写场景。

 

 

设计指南

 

当你在MongoDB中对“一对多”关系进行建模,你有很多的方案可供选择,所以你必须很谨慎的去考虑数据的结构。下面这些问题是你必须认真思考的:

 

关系中集合的规模有多大:是一对很少,很多,还是非常多?

 

对于一对多中”多“的那一端,是否需要单独的访问它们,还是说它们只会在父对象的上下文中被访问。

 

被冗余的字段的读写的比例是多少?

 

数据建模设计指南

 

在一对很少的情况下,你可以在父文档中内嵌数组。

 

在一对很多或者需要单独访问“N”端的数据时,你可以采用数组引用ObjectID的方式。如果可以加速你的访问也可以在“N”端使用父引用。

 

在一对非常多的情况下,可以在“N”端使用父引用。

 

如果你打算在你的设计中引入冗余等反范式设计,那么你必须确保那些冗余的数据读取的频率远远大于更新的频率。而且你也不需要很强的一致性。因为反范式化的设计会让你在更新冗余字段时付出一定的代价(更慢,非原子化)

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Apr 08, 2025 pm 09:39 PM

Tidak mustahil untuk melihat kata laluan MongoDB secara langsung melalui Navicat kerana ia disimpan sebagai nilai hash. Cara mendapatkan kata laluan yang hilang: 1. Tetapkan semula kata laluan; 2. Periksa fail konfigurasi (mungkin mengandungi nilai hash); 3. Semak Kod (boleh kata laluan Hardcode).

Apakah strategi sandaran CentOS MongoDB? Apakah strategi sandaran CentOS MongoDB? Apr 14, 2025 pm 04:51 PM

Penjelasan terperinci mengenai strategi sandaran yang cekap MongoDB di bawah sistem CentOS Artikel ini akan memperkenalkan secara terperinci pelbagai strategi untuk melaksanakan sandaran MongoDB pada sistem CentOS untuk memastikan kesinambungan data dan kesinambungan perniagaan. Kami akan merangkumi sandaran manual, sandaran masa, sandaran skrip automatik, dan kaedah sandaran dalam persekitaran kontena Docker, dan menyediakan amalan terbaik untuk pengurusan fail sandaran. Sandaran Manual: Gunakan perintah Mongodump untuk melakukan sandaran penuh manual, contohnya: Mongodump-Hlocalhost: 27017-U Pengguna-P Password-D Database Data-O/Backup Direktori Perintah ini akan mengeksport data dan metadata pangkalan data yang ditentukan ke direktori sandaran yang ditentukan.

Cara Menyulitkan Data dalam Debian Mongodb Cara Menyulitkan Data dalam Debian Mongodb Apr 12, 2025 pm 08:03 PM

Menyulitkan pangkalan data MongoDB pada sistem Debian memerlukan langkah berikut: Langkah 1: Pasang MongoDB terlebih dahulu, pastikan sistem Debian anda dipasang MongoDB. Jika tidak, sila rujuk kepada dokumen MongoDB rasmi untuk pemasangan: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/step 2: menghasilkan fail kunci penyulitan Buat fail yang mengandungi kunci penyulitan dan tetapkan kebenaran yang betul:

MySQL: Pengenalan mesra pengguna ke pangkalan data MySQL: Pengenalan mesra pengguna ke pangkalan data Apr 10, 2025 am 09:27 AM

Pemasangan dan operasi asas MySQL termasuk: 1. Muat turun dan pasang MySQL, tetapkan kata laluan pengguna root; 2. Gunakan arahan SQL untuk membuat pangkalan data dan jadual, seperti CreateTatabase dan Createtable; 3. Melaksanakan operasi CRUD, gunakan memasukkan, pilih, kemas kini, padamkan arahan; 4. Buat indeks dan prosedur tersimpan untuk mengoptimumkan prestasi dan melaksanakan logik kompleks. Dengan langkah -langkah ini, anda boleh membina dan mengurus pangkalan data MySQL dari awal.

Cara menyusun indeks mongoDB Cara menyusun indeks mongoDB Apr 12, 2025 am 08:45 AM

Indeks Penyortiran adalah sejenis indeks MongoDB yang membolehkan dokumen menyusun dalam koleksi oleh medan tertentu. Mewujudkan indeks jenis membolehkan anda menyusun hasil pertanyaan dengan cepat tanpa operasi penyortiran tambahan. Kelebihan termasuk penyortiran cepat, menimpa pertanyaan, dan penyortiran atas permintaan. Sintaks adalah db.collection.createIndex ({field: & lt; sort order & gt;}), di mana & lt; sort order & gt; adalah 1 (urutan menaik) atau -1 (perintah menurun). Anda juga boleh membuat indeks penyortiran berbilang bidang yang menyusun pelbagai bidang.

See all articles