MongoDB có thể xử lý bao nhiêu bộ sưu tập?

Mối quan hệ thực thi tính toàn vẹn dữ liệu trong cơ sở dữ liệu quan hệ. Tuy nhiên, không có mối quan hệ nào giữa các tài liệu trong MongoDB và các cơ sở dữ liệu NoSQL khác. Kết quả là, các tài liệu được khép kín. Có một số cách tiếp cận khác nhau để mô hình hóa các mối quan hệ tài liệu này.  

using data relationship in MongoDBMongoDB Mối quan hệ là đại diện cho cách nhiều tài liệu được kết nối logic với nhau trong MongoDB. Các phương thức Embedded và Referenced là hai cách để tạo các mối quan hệ như vậy. Mối quan hệ nhúng và Mối quan hệ tham chiếu tài liệu là hai loại mối quan hệ có các cách làm việc khác nhau với tài liệu.  

Trong khi Embedded là lý tưởng cho các mối quan hệ một-một và một-nhiều, thì Referenced là lý tưởng cho mối quan hệ nhiều-nhiều. Không chuẩn hóa, được nhúng, trong khi Chuẩn hóa là tên được đặt cho các mối quan hệ Tham chiếu. Thiết lập mối quan hệ giữa các tài liệu có thể hỗ trợ tinh chỉnh cấu trúc cơ sở dữ liệu, cũng như cải thiện hiệu suất và giảm thời gian thực hiện.  

Mô hình tài liệu nhúng.  

Các tài liệu được nhúng vào nhau trong mô hình này. Chẳng hạn, chúng tôi có hai tài liệu. một là tài liệu sinh viên (chứa thông tin cơ bản của sinh viên như id và chi nhánh) và tài liệu kia là tài liệu địa chỉ (chứa địa chỉ của sinh viên). Kết quả là, thay vì tạo hai tài liệu riêng biệt, tài liệu địa chỉ được nhúng trong tài liệu sinh viên. Nó sẽ hỗ trợ người dùng truy xuất dữ liệu bằng một truy vấn duy nhất thay vì một loạt truy vấn

Mô hình tham chiếu.  

Chúng tôi giữ các tài liệu riêng biệt trong mô hình này, nhưng một tài liệu chứa các tham chiếu đến các tài liệu khác. Chẳng hạn, chúng tôi có hai tài liệu. một là tài liệu sinh viên (chứa thông tin cơ bản của sinh viên như id và chi nhánh) và tài liệu kia là tài liệu địa chỉ (chứa địa chỉ của sinh viên). Do đó, trường id của tài liệu địa chỉ được tham chiếu trong tài liệu sinh viên. Bây giờ chúng ta có thể truy vấn địa chỉ và lấy địa chỉ của học sinh bằng cách sử dụng id tham chiếu này. Các mối quan hệ chuẩn hóa thường được thiết kế bằng mô hình này

Mối quan hệ một đối một(1. 1)

Mối quan hệ cơ bản nhất trong tất cả các mối quan hệ là mối quan hệ một đối một. Nếu chúng ta có tài liệu một cha và một con, thì đó là một ví dụ về mối quan hệ một đối một.  

Ví dụ.  

Xem xét tình huống sau. chúng tôi có hai tài liệu. Tài liệu đầu tiên chứa tên id và chi nhánh của sinh viên, trong khi tài liệu thứ hai chứa thông tin địa chỉ thường trú của sinh viên.  

// Student document 
{ 
    StudentName: Ishan, 
    StudentId: k_hut_2022, 
    Branch:CSE 
} 
 
// Address document 
{ 
    StudentName: Ishan, 
    PremanentAddress: XXXXXXX, 
    City: Jaipur, 
    PinCode:302022 
} 

Nếu dữ liệu địa chỉ được sử dụng thường xuyên, người dùng sẽ tạo truy vấn bằng Tên sinh viên để truy xuất dữ liệu từ tài liệu địa chỉ. Tuy nhiên, vì hai tài liệu chứa cùng một trường (i. e. , StudentName), người dùng phải viết thêm một số truy vấn để lấy thông tin cần thiết. Quy trình truy xuất dữ liệu này tốn nhiều thời gian. Do đó, tài liệu địa chỉ đã được nhúng vào tài liệu sinh viên.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 

Để lấy dữ liệu cần thiết, bây giờ chúng ta chỉ cần viết một truy vấn duy nhất. Lợi ích của việc sử dụng tài liệu nhúng là chúng ta có thể nhóm các thông tin cần thiết vào một tài liệu duy nhất. Do đó, việc nhận thông tin chi tiết trong một cuộc gọi trở nên dễ dàng hơn. Tuy nhiên, khi tài liệu mở rộng kích thước, chẳng hạn như bằng cách thêm thông tin về học thuật và thể thao vào tài liệu trên, thì việc truy xuất thông tin sẽ trở nên lâu hơn và mất nhiều thời gian hơn. Chúng tôi có thể chỉ cần thông tin về học tập hoặc thể thao khi được yêu cầu và trong những trường hợp đó, chúng tôi có thể cần chia nhỏ tài liệu và sử dụng một mẫu tập hợp con.  

Bây giờ, chúng ta sẽ tạo một Cơ sở dữ liệu có tên ‘Knowledgehut’ và một bộ sưu tập có tên ‘student’.  

db.student.insert({"StudentName":"Ishan","StudentId":"k_hut_2022","Branch":"CSE","PermanentAddress":{"permaAddress":"xxxxxxxx","City":"Jaipur","PinCode":302022}}) 

Bạn có thể kiểm tra các tài liệu trong cơ sở dữ liệu với.  

db.student.find().pretty() 
Data Relationships in MongoDB – A quick guide

Bây giờ chúng ta sẽ kiểm tra địa chỉ của học sinh.

db.student.find({StudentName:"Ishan"},{"PermanentAddress.permaAddress":1}).pretty() 
Data Relationships in MongoDB – A quick guide

Mối quan hệ một-nhiều (1. N) 

Một tài liệu gốc có nhiều tài liệu con là một ví dụ về mối quan hệ một-nhiều. Nó tương tự như một đối một, nhưng với một số lượng lớn các tài liệu "con". Sử dụng phương pháp nhúng để thiết lập mối quan hệ có thể giảm số lượng thao tác đọc cần thiết để truy xuất dữ liệu.  

Mối quan hệ một-nhiều với Tài liệu nhúng

Ví dụ.  

Chúng tôi có thể tạo mối quan hệ một-nhiều giữa dữ liệu bằng tài liệu được nhúng, cho phép chúng tôi truy xuất dữ liệu nhanh chóng với một vài thao tác đọc. Với sự trợ giúp của một ví dụ, bây giờ chúng ta sẽ thảo luận về mối quan hệ một-nhiều với các tài liệu được nhúng.   

Một người có thể có nhiều địa chỉ, chẳng hạn như địa chỉ hiện tại (địa điểm mà người đó hiện đang cư trú) và địa chỉ cư trú (địa điểm mà người đó sở hữu nhà hoặc có địa chỉ thường trú). Một đến nhiều khả năng mối quan hệ xảy ra trong thời gian đó. Do đó, chúng tôi có thể lưu trữ cả địa chỉ cố định và địa chỉ hiện tại trong một tài liệu bằng cách sử dụng mô hình tài liệu được nhúng.  

// Student document 
{ 
    StudentName: Ishan, 
    StudentId: k_hut_2022, 
    Branch:CSE 
} 
 
// Permanent Address document 
{ 
    StudentName: Ishan, 
    PermanentAddress: XXXXXXX, 
    City: Jaipur, 
    PinCode:302022 
} 
 
// Current Address document 
{ 
    StudentName: Ishan, 
    CurrentAddress: XXXXXXX, 
    City: Kota, 
    PinCode:324001 
} 

Thay vì viết ba tài liệu, bây giờ chúng ta có thể kết hợp chúng thành một.  

// Student document 
{ 
    StudentName: ishan, 
    StudentId: k_hut_2022, 
    Branch:CSE 
    Address: [ 
    { 
        StudentName: Ishan, 
        PermanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }, 
    { 
        StudentName: Ishan, 
        CurrentAddress: XXXXXXX, 
        City: kota, 
        PinCode:324001 
    } 
    ] 
} 

Bởi vì chúng tôi giữ tất cả dữ liệu trong một bộ sưu tập duy nhất (ngay cả khi có nhiều hơn hai loại thông tin địa chỉ, chúng tôi có thể giữ chúng trong một mảng JSON), chúng tôi có thể truy vấn trong một lệnh gọi và lấy toàn bộ bộ dữ liệu, dẫn đến .  

Ở đây, chúng tôi đang sử dụng cơ sở dữ liệu knowledgehut và bộ sưu tập student.  

Chèn tài liệu vào bộ sưu tập với đoạn mã sau.  

db.student.insert({"StudentName":"Ishan","StudentId":"k_hut_2022","Branch":"CSE","PermanentAddress":[{"permaAddress":"xxxxxxxx","City":"Jaipur","PinCode":302022}, {"currAddress": "pppppp","City": "Kota","PinCode": 324001}]}) 
Data Relationships in MongoDB – A quick guide

Bây giờ chúng ta sẽ kiểm tra địa chỉ của học sinh.

db.student.find({StudentName:"Ishan"},{"PermanentAddress.permaAddress":1,"PermanentAddress.currAddress":1}).pretty() 
Data Relationships in MongoDB – A quick guide

Một trong những lợi ích chính của việc tạo Mối quan hệ được nhúng trong MongoDB là các truy vấn được thực thi nhanh hơn mối quan hệ được tham chiếu. Mối quan hệ này cũng cải thiện hiệu suất và thu được kết quả nhanh chóng. Điều này cũng đúng với các tập dữ liệu lớn.

Mối quan hệ một-nhiều với tham chiếu tài liệu \

Mô hình tham chiếu tài liệu cũng có thể được sử dụng để tạo mối quan hệ một-nhiều. Chúng tôi giữ các tài liệu riêng biệt trong mô hình này, nhưng một tài liệu chứa các tham chiếu đến các tài liệu khác.  

Ví dụ.  

Với sự trợ giúp của một ví dụ, bây giờ chúng ta sẽ thảo luận về mối quan hệ một-nhiều với tài liệu tham khảo. Giả sử rằng chúng ta có một giáo viên dạy ở hai lớp khác nhau. Và cô ấy đang sở hữu ba tài liệu.  

// Class 1 document 
{ 
    TeacherId: k_hut_2022, 
    ClassName: khutA, 
    ClassId: D_123, 
    Studentcount: 44, 
    Subject: "DSA", 
} 
 
// Class 2 document 
{ 
    TeacherId: k_hut_2022, 
    ClassId: D_234, 
    ClassName: khutB, 
    Studentcount: 55, 
    Subject: "Compiler”, 
} 

Truy xuất dữ liệu từ các tài liệu khác nhau này hiện đang tốn thời gian. Do đó, chúng tôi sẽ sử dụng mô hình tham chiếu để hỗ trợ giáo viên truy xuất dữ liệu bằng một truy vấn duy nhất.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
0

Giờ đây, có thể dễ dàng truy xuất dữ liệu cho lớp 1 và lớp 2 bằng cách sử dụng các trường classIds này.  

Ở đây, chúng tôi đang làm việc với cơ sở dữ liệu knowledgehut và bây giờ, chúng tôi sẽ sử dụng một giáo viên bộ sưu tập mới.  

Để chèn nhiều tài liệu, chúng ta sẽ sử dụng phương thức insertMany().  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
1

Khi bạn chèn các tài liệu này vào bộ sưu tập, bạn sẽ thấy kết quả như thế này.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
2

Bây giờ, để kiểm tra tài liệu, hãy sử dụng.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
3Data Relationships in MongoDB – A quick guide

Mối quan hệ nhiều-nhiều (N. M) 

Vì không có một lệnh duy nhất để triển khai mối quan hệ nhiều-nhiều trong cơ sở dữ liệu quan hệ nên sẽ khó hơn mối quan hệ một-nhiều. Điều này cũng đúng khi sử dụng mongoDB để triển khai chúng. Trên thực tế, bạn không thể sử dụng lệnh để tạo bất kỳ loại mối quan hệ nào trong MongoDB.   

Mặt khác, khả năng lưu trữ mảng trong tài liệu cho phép bạn lưu trữ dữ liệu theo cách dễ truy xuất và bảo trì, cũng như cung cấp cho bạn thông tin bạn cần để liên kết hai tài liệu trong mã của bạn.  

Mối quan hệ Nhiều đến Nhiều là một loại mối quan hệ mongodb trong đó hai thực thể bất kỳ trong một tài liệu có thể có nhiều mối quan hệ.  

Trong mối quan hệ này, chúng ta có thể xem xét trường hợp trang web khóa học trực tuyến nơi có nhiều khóa học và cũng có nhiều người dùng. Mỗi khóa học được mua bởi nhiều người dùng và mỗi người dùng có thể mua nhiều khóa học.  

Ví dụ.  

Đối với điều này, chúng tôi sẽ tạo một cơ sở dữ liệu kiến thức và hai bộ sưu tập người dùng và khóa học khác nhau.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
4

đầu ra.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
5

Trong bộ sưu tập khóa học, chúng tôi đã thêm hai khóa học và giá của các khóa học đó bằng đô la.  

Trong bộ sưu tập người dùng, chúng tôi sẽ thêm tài liệu của người dùng đã đăng ký khóa học bằng lệnh này.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
6

đầu ra.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
7

Chúng tôi có thể kiểm tra bộ sưu tập người dùng với.  

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
8Data Relationships in MongoDB – A quick guide

Tiếp theo, chúng ta phải cập nhật bộ sưu tập khóa học với userId.

{ 
    StudentName: Ishan, 
    StudentId: k_hut_2020, 
    Branch:CSE 
    PermanentAddress:{ 
        PremanentAddress: XXXXXXX, 
        City: Jaipur, 
        PinCode:302022 
    }  
} 
9

đầu ra.  

db.student.insert({"StudentName":"Ishan","StudentId":"k_hut_2022","Branch":"CSE","PermanentAddress":{"permaAddress":"xxxxxxxx","City":"Jaipur","PinCode":302022}}) 
0Data Relationships in MongoDB – A quick guide

Giờ đây, bạn có thể xem bộ sưu tập khóa học với usersId trong danh sách người dùng.

Nhúng hoặc tham chiếu?

Có hai loại mối quan hệ trong MongoDB. Được nhúng và làm tài liệu tham khảo. Mỗi mối quan hệ đều có những lợi ích và hạn chế riêng. Các kết nối này hỗ trợ nâng cao hiệu suất. Nó thực hiện bất kỳ mối quan hệ nào là Một với Một, Một với Nhiều hoặc Nhiều với Nhiều tùy thuộc vào tình huống. Việc triển khai mối quan hệ này đã cải thiện tính nhất quán của dữ liệu.  

MongoDB có thể có nhiều bộ sưu tập không?

Có, bạn có thể có nhiều bộ sưu tập trong một cơ sở dữ liệu ở MongoDB . Các bộ sưu tập có thể được coi là tương tự như các bảng trong cơ sở dữ liệu quan hệ.

MongoDB có thể xử lý bao nhiêu bản ghi?

Mongo có thể dễ dàng xử lý hàng tỷ tài liệu và có thể có hàng tỷ tài liệu trong một bộ sưu tập nhưng hãy nhớ rằng kích thước tài liệu tối đa là 16mb. Có rất nhiều người có hàng tỷ tài liệu trong MongoDB và có rất nhiều cuộc thảo luận về nó trên Nhóm người dùng Google MongoDB

MongoDB có thể xử lý hàng triệu bản ghi không?

Tóm tắt tất cả các thử nghiệm. Mongo Atlas có thể dễ dàng đối phó với việc cập nhật các bản ghi dưới 1 triệu . Thậm chí updateMany sẽ thành công trong vài phút.