Koleksi berbanding Jadual SQL
Pelajar akan membandingkan koleksi MongoDB dengan jadual hubungan dan memahami cara skema fleksibel mengubah reka bentuk data.
Koleksi berbanding Jadual SQL ialah pelajaran MongoDB Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran MongoDB Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus MongoDB Academy merangkumi sejumlah 4 pelajaran.
Jadual berbanding Collection Secara Ringkas
Unit asas SQL ialah jadual, yang setiap barisnya mempunyai lajur yang sama. Unit asas MongoDB ialah collection — sekumpulan dokumen yang setiap satunya boleh berbeza.
Skema Tetap: Cara SQL
SQL memerlukan skema tetap yang ditentukan sebelum sebarang data dimasukkan, dan mengubahnya kemudian boleh menyebabkan keseluruhan jadual dibina semula. Tegas, tetapi mudah dijangka dan cekap dari segi storan.
-- SQL table: schema defined upfront, rigid
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(200) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT NOW()
);
-- Every row must have exactly these columnsSkema Fleksibel: Cara MongoDB
Collection MongoDB muncul sebaik sahaja anda memasukkan data — tiada skema diperlukan. Skema fleksibel ini amat baik untuk pembinaan prototaip, tetapi kod anda mesti mengendalikan medan yang tiada.
// No schema definition needed - collection created on first insert
db.users.insertOne({ name: 'Alice', email: 'alice@test.com', age: 30 });
// Next insert can have completely different fields
db.users.insertOne({ name: 'Bob', email: 'bob@test.com', company: 'Acme', role: 'admin' });
// Both documents live in the same 'users' collectionSkema berbanding Tanpa Skema: Pertimbangannya
Tiada satu pun yang menang sepenuhnya. Skema tetap membantu menghalang data yang tidak sah; skema fleksibel membolehkan anda bergerak pantas. Pengesahan JSON Schema MongoDB memberikan pilihan pertengahan.
Normalisasi berbanding Denormalisasi
SQL mengutamakan normalisasi — memisahkan data merentas jadual. MongoDB mengutamakan denormalisasi — menyematkan data berkaitan bersama-sama supaya anda boleh membacanya sekaligus tanpa JOIN.
// SQL normalized: address in separate table
// SELECT u.name, a.city FROM users u JOIN addresses a ON a.user_id = u.id
// MongoDB denormalized: address embedded in user document
{
_id: ObjectId('...'),
name: 'Alice',
address: { city: 'London', zip: 'EC1A' } // no JOIN needed
}Mencipta Collection Secara Eksplisit
Collection muncul secara automatik, tetapi createCollection membolehkan anda menetapkan pilihan lebih awal — seperti collection terhad untuk log atau pengesah. Kod menunjukkan salah satu contohnya.
// Create a capped collection explicitly
db.createCollection('appLogs', {
capped: true,
size: 10485760, // 10 MB maximum size
max: 50000 // optional: max 50,000 documents
});
// When full, oldest documents are automatically removedMenyenaraikan dan Menggugurkan Collection
Beberapa arahan berguna boleh menyenaraikan, mengira dan menggugurkan collection. Untuk mengosongkan collection tanpa memadamkannya, gunakan deleteMany — tiada TRUNCATE dalam MongoDB. Kod menunjukkan arahan-arahan tersebut.
// Useful collection management commands in mongosh
db.getCollectionNames();
// ['users', 'orders', 'products']
db.users.countDocuments({});
// 4823
db.users.stats().storageSize;
// 2097152 (bytes)
// Delete all documents but keep the collection:
db.users.deleteMany({});
// { acknowledged: true, deletedCount: 4823 }Medan _id dan Kunci Primer
Setiap collection mempunyai _id sebagai kunci primernya, bersama indeks unik automatik. Anda boleh memberikan _id sendiri — seperti SKU produk — asalkan nilainya unik.
// Custom _id values
db.products.insertOne({
_id: 'SKU-HEADPHONES-BLK-42', // string _id
name: 'Wireless Headphones Black',
price: 79.99
});
// Lookup by custom _id is O(log n) via the _id index
db.products.findOne({ _id: 'SKU-HEADPHONES-BLK-42' });Perbezaan Struktur Indeks
SQL dan MongoDB kedua-duanya menggunakan indeks B-tree, tetapi MongoDB juga boleh mengindeks medan bersarang dan elemen tatasusunan. Jadi, skema fleksibel tidak menjejaskan kelajuan pertanyaan.
// Index a nested field and an array field
db.users.createIndex({ 'address.city': 1 });
// Now queries on city use an index:
db.users.find({ 'address.city': 'Chicago' });
// Multikey index on array field - indexes each element
db.products.createIndex({ tags: 1 });
db.products.find({ tags: 'electronics' }); // uses multikey indexTransaksi: Jadual berbanding Collection
Sejak v4.0, MongoDB menyokong transaksi berbilang dokumen. Namun, dengan menyematkan data berkaitan dalam satu dokumen, anda selalunya mendapat kemas kini atomik tanpa memerlukannya langsung.
// Single-document atomicity (always available)
// Updating order status and adding a tracking number
db.orders.updateOne(
{ _id: orderId },
{ $set: { status: 'shipped', trackingNumber: 'UPS123456' } }
);
// These two field updates happen atomically - no transaction neededBila Memilih Jadual berbanding Collection
Dalam sesetengah keadaan, jadual SQL ialah pilihan yang lebih baik: skema yang stabil, JOIN yang banyak, atau integriti kunci asing yang ketat. Pilih alat yang tepat, bukan yang paling mengikut trend.
Semakan Pantas
Uji pemahaman anda tentang konsep MongoDB & pangkalan data NoSQL daripada pelajaran ini.
Ulang Kaji Pelajaran
Anda telah mempelajari bahawa collection tidak memaksa penggunaan skema, MongoDB menyematkan data berkaitan untuk mengelakkan JOIN, dan setiap collection mengindeks _id secara automatik. Seterusnya: pangkalan data dan ruang nama.
Pelajari JavaScript dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Koleksi berbanding Jadual SQL” percuma?
Ya — teks penuh “Koleksi berbanding Jadual SQL” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus MongoDB Academy, tingkat taraf kepada CoddyKit PRO. Kursus MongoDB Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Koleksi berbanding Jadual SQL”?
Pelajar akan membandingkan koleksi MongoDB dengan jadual hubungan dan memahami cara skema fleksibel mengubah reka bentuk data. Anda berlatih MongoDB Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan MongoDB Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran MongoDB Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Koleksi berbanding Jadual SQL” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran MongoDB Academy ini?
Ya. Setiap pelajaran MongoDB Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Apakah Dokumen BSON?
- Koleksi berbanding Jadual SQL
- Pangkalan Data, Koleksi dan Ruang Nama
- Asas Cangkerang mongosh