sách gpt4 ai đã đi

Ưu điểm và nhược điểm của việc sử dụng MongoDB thay vì MS SQL Server

In lại Tác giả: IT Lao Gao Thời gian cập nhật: 2023-10-28 11:04:56 30 4
mua khóa gpt4 Nike

Tôi mới tham gia vào thế giới NoSQL và đang nghĩ đến việc thay thế cơ sở dữ liệu MS Sql Server của mình bằng MongoDB. Ứng dụng của tôi (viết bằng .Net C#) tương tác với camera IP và ghi lại siêu dữ liệu cho từng hình ảnh từ camera vào cơ sở dữ liệu MS SQL. Trung bình tôi chèn khoảng 86400 bản ghi mỗi ngày cho mỗi camera và trong lược đồ cơ sở dữ liệu hiện tại, tôi đã tạo các bảng riêng biệt cho từng hình ảnh camera như Camera_1_Images, Camera_2_Images ... Camera_N_Images. Một bản ghi hình ảnh đơn lẻ bao gồm thông tin siêu dữ liệu đơn giản. Giống như AutoId, FilePath, CreationDate. Để thêm chi tiết, ứng dụng của tôi sẽ khởi động một tiến trình riêng (.exe) cho mỗi camera và mỗi tiến trình sẽ chèn 1 bản ghi mỗi giây vào bảng có liên quan trong cơ sở dữ liệu.

Tôi cần lời khuyên từ chuyên gia (MongoDB) về vấn đề sau:

  1. MongoDB có phải là lựa chọn tốt để lưu trữ dữ liệu sẽ được truy vấn dựa trên khoảng thời gian (ví dụ: truy xuất tất cả hình ảnh từ một camera cụ thể trong một giờ cụ thể) không? Có gợi ý nào về thiết kế lược đồ dựa trên tài liệu cho trường hợp của tôi không?

  2. Thông số kỹ thuật của máy chủ nên như thế nào (CPU, RAM, Ổ đĩa)? Có gợi ý nào không?

  3. Tôi có nên cân nhắc phân mảnh/sao chép trong trường hợp này không (cũng cân nhắc đến hiệu suất ghi vào bộ bản sao được đồng bộ hóa)?

  4. Lợi ích của việc sử dụng nhiều cơ sở dữ liệu trên cùng một máy là gì, trong đó một cơ sở dữ liệu sẽ lưu trữ hình ảnh của ngày hiện tại từ tất cả các camera và một cơ sở dữ liệu thứ hai sẽ được sử dụng để lưu trữ hình ảnh của ngày hôm trước? Tôi đang nghĩ đến việc tách các thao tác đọc và ghi trên các cơ sở dữ liệu riêng biệt. Bởi vì tất cả các yêu cầu đọc có khả năng sẽ được xử lý bởi cơ sở dữ liệu thứ hai và được ghi vào cơ sở dữ liệu thứ nhất. Liệu nó có lợi hay không? Nếu có thì có ý tưởng nào để đảm bảo cả hai cơ sở dữ liệu luôn được đồng bộ không?

Chúng tôi hoan nghênh những đề xuất khác.

1 Câu trả lời

Bản thân tôi là người mới bắt đầu làm quen với cơ sở dữ liệu NoSQL. Vì vậy, tôi trả lời câu hỏi này mặc dù có thể sẽ nhận được nhiều lượt bình chọn tiêu cực, nhưng đây sẽ là một trải nghiệm học hỏi tuyệt vời đối với tôi.

Trước khi cố gắng hết sức để trả lời câu hỏi của bạn, tôi phải nói rằng nếu MS SQL Server hoạt động tốt với bạn thì hãy tiếp tục sử dụng. Bạn chưa đề cập đến bất kỳ lý do hợp lệ nào TẠI SAO bạn muốn sử dụng MongoDB ngoại trừ thực tế là bạn đã tìm hiểu về nó như một cơ sở dữ liệu hướng tài liệu. Hơn nữa, tôi thấy rằng bạn có gần như cùng một tập hợp siêu dữ liệu mà bạn đang chụp cho mỗi camera, tức là lược đồ của bạn là động.

  • MongoDB có phải là lựa chọn tốt để lưu trữ dữ liệu sẽ được truy vấn dựa trên khoảng thời gian (ví dụ: truy xuất tất cả hình ảnh từ một máy ảnh cụ thể trong khoảng thời gian đã chỉ định) không? Có gợi ý nào về thiết kế lược đồ dựa trên tài liệu cho trường hợp của tôi không?

MongoDB là một cơ sở dữ liệu hướng tài liệu có khả năng truy vấn tuyệt vời ở trong Tổng hợp (bạn gọi chúng là tài liệu). Vì bạn đã lưu trữ dữ liệu của từng camera trong bảng riêng của nó, trong MongoDB, bạn sẽ tạo một bảng riêng bộ sưu tập. Đây là cáchBạn thực hiện truy vấn phạm vi ngày.

  • Thông số kỹ thuật của máy chủ nên như thế nào (CPU, RAM, Ổ đĩa)? Có gợi ý nào không?

Tất cả cơ sở dữ liệu NoSQL đều được thiết kế để chạy trên phần cứng thông dụng.Tỷ lệ ngangĐược xây dựng. Nhưng cách bạn đặt câu hỏi, bạn có thể đang nghĩ đếnMở rộng quy môđể cải thiện hiệu suất. Bạn có thể bắt đầu với một máy chủ hợp lý và khi tải tăng lên, bạn có thể tiếp tục thêm nhiều máy chủ hơn (mở rộng quy mô). Bạn không cần phải lên kế hoạch và mua một máy chủ cao cấp.

  • Tôi có nên cân nhắc phân mảnh/sao chép trong trường hợp này không (cũng cân nhắc đến hiệu suất ghi vào bộ bản sao được đồng bộ hóa)?

MongoDB khóa toàn bộ dbNó được thiết kế để ghi đơn lẻ (nhưng sẽ tạo ra các hoạt động khác) và phù hợp với các hệ thống đọc nhiều hơn ghi. Vì vậy, điều này phụ thuộc vào hệ thống của bạn. Có nhiều cách để phân mảnh và chúng phải phù hợp với từng miền cụ thể. Không thể có câu trả lời chung được. Nhưng có thể đưa ra một số ví dụ, chẳng hạn như phân mảnh theo địa lý, theo nhánh, v.v.

ĐỌC THÊM Giới thiệu bằng tiếng Anh đơn giản về Định lý CAP

Đã cập nhật câu trả lời cho bình luận về phân mảnh

Theo họtài liệu , bạn nên cân nhắc triển khai cụm phân mảnh nếu:

  • Bộ dữ liệu của bạn gần bằng hoặc vượt quá dung lượng lưu trữ của một nút duy nhất trong hệ thống.
  • Kích thước bộ nhớ đang hoạt động của hệ thống sẽ sớm vượt quá dung lượng RAM tối đa của hệ thống.
  • Hệ thống của bạn có lượng hoạt động ghi lớn, một phiên bản MongoDB duy nhất không thể ghi dữ liệu đủ nhanh để đáp ứng nhu cầu và mọi cách tiếp cận khác đều không làm giảm được sự tranh chấp.

Vậy dựa trên điểm cuối cùng thì đúng vậy. Tính năng phân mảnh tự động được thiết kế để mở rộng quy mô ghi. Trong trường hợp này, mỗi Mảnh vỡ Có một khóa ghi, không phải mỗi cơ sở dữ liệu. Nhưng câu trả lời của tôi chỉ là lý thuyết. Tôi khuyên bạn nên tham khảo ý kiến ​​của nhóm 10gen.com.

Về sql - Ưu điểm và nhược điểm của việc sử dụng MongoDB thay vì MS SQL Server, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13190468/

30 4 0
CNTT Lao Gao
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com