Hướng dẫn how do i make mongodb search faster? - làm cách nào để tìm kiếm mongodb nhanh hơn?

MongoDB là cơ sở dữ liệu tài liệu NoQuery Premier cho các nhà phát triển hiện đại làm việc trên các ứng dụng hiệu suất cao. Với các tài liệu giống JSON, MongoDB đáng chú ý là tỷ lệ ngang và cân bằng tải trọng, cung cấp cho các nhà phát triển một sự cân bằng tuyệt vời về khả năng tùy biến và mở rộng.

Nhưng giống như bất kỳ công cụ hiệu suất cao nào, MongoDB thực hiện tốt nhất trong tay của một chuyên gia, người biết những gì họ làm. Các vấn đề về hiệu suất có thể chỉ ra rằng cơ sở dữ liệu không hoạt động chăm chỉ nhất có thể và các tối ưu hóa cụ thể có thể dẫn đến hiệu suất tốt hơn.

Trong bài đăng này, chúng tôi sẽ tập trung vào cách đạt được hiệu suất ở quy mô bằng MongoDB bằng cách xem:

  • Các mẫu truy vấn và hồ sơ
  • Mô hình hóa và lập chỉ mục dữ liệu
  • Nhúng và tham khảo
  • Bộ nhớ kích thước
  • Sao chép và chia rẽ

Xin lưu ý rằng các thực tiễn tốt nhất mà chúng tôi sẽ đề cập không đầy đủ (điều đó sẽ đòi hỏi một bài viết dài hơn nhiều).

Ai nên đọc hướng dẫn này?

Mặc dù bất kỳ ai quan tâm đến các nền tảng cơ sở dữ liệu tài liệu đều có thể học được điều gì đó từ bài đăng này, nhưng bạn có thể thấy thông tin này đặc biệt hữu ích nếu bạn:

  • Bắt đầu dự án đầu tiên của bạn với tư cách là một nhà phát triển MongoDB dày dạn.

  • Chạy MongoDB trên Atlas, dịch vụ cơ sở dữ liệu đám mây toàn cầu được quản lý đầy đủ

  • Quản lý MongoDB bản thân


Nếu bạn chỉ có một vài phút rảnh rỗi, Câu hỏi thường gặp về hiệu suất nhanh này có thể hữu ích:

1. Tại sao hiệu suất cao của MongoDB?

Các truy vấn ad hoc, lập chỉ mục và tổng hợp thời gian thực cung cấp các cách mạnh mẽ để truy cập dữ liệu. MongoDB là cơ sở dữ liệu phân tán theo mặc định, cho phép khả năng mở rộng theo chiều ngang mở rộng mà không có bất kỳ thay đổi nào đối với logic ứng dụng.


2. Truy vấn MongoDB nhanh như thế nào?

Khá thật nhanh. Các truy vấn khóa hoặc chỉ mục chính sẽ chỉ mất vài mili giây. Truy vấn không có chỉ mục phụ thuộc vào kích thước thu thập và thông số kỹ thuật của máy, v.v.


3. Làm thế nào tôi có thể làm cho MongoDB nhanh hơn?

Nó phụ thuộc vào những gì bạn đang làm và aren đã làm. Hãy thử thêm các chỉ số. Don lồng làm tham gia (nhúng là thích hợp hơn). Nâng cấp thông số kỹ thuật máy của bạn. Và, nếu bạn thiên đường, chắc chắn hãy thử chia nhỏ cho tỷ lệ ngang.


4. MongoDB cần bao nhiêu RAM?

MongoDB cần đủ RAM để giữ bộ làm việc của bạn trong bộ nhớ. Tất nhiên, câu trả lời chính xác phụ thuộc vào kích thước dữ liệu của bạn và khối lượng công việc của bạn. Bạn có thể sử dụng Atlas MongoDB để tự động chia tỷ lệ.


5. MongoDB có tốt cho dữ liệu lớn không?

Vâng, nó chắc chắn là. MongoDB là tuyệt vời cho các bộ dữ liệu lớn. MongoDB Atlas có thể xử lý các truy vấn được liên kết trên toàn bộ lưu trữ đối tượng (ví dụ: Amazon S3) và lưu trữ tài liệu.



Không có gì khó chịu, hãy để Lừa vượt qua 5 thực tiễn tốt nhất để có được hiệu suất cao nhất từ ​​cơ sở dữ liệu MongoDB của bạn.


Thực hành tốt nhất #1: Kiểm tra các mẫu truy vấn và hồ sơ

Hầu hết các nhà phát triển sẽ đồng ý rằng bước đầu tiên trong việc tối ưu hóa hiệu suất là hiểu các mẫu truy vấn thực tế và mong đợi. Khi bạn biết các mẫu truy vấn ứng dụng của bạn như mặt sau của bàn tay, bạn có thể thiết kế mô hình dữ liệu của mình và chọn các chỉ số phù hợp cho phù hợp.

Với MongoDB, các nhà phát triển có quyền truy cập vào một số công cụ mạnh mẽ có thể giúp họ cải thiện đáng kể hiệu suất, nhưng điều đó không có nghĩa là các mẫu và hồ sơ truy vấn cũng có thể bị bỏ qua.

Ví dụ: một cách dễ dàng để tăng cường hiệu suất là chỉ bằng cách phân tích các mẫu truy vấn của bạn và xác định nơi bạn có thể nhúng dữ liệu thay vì thực hiện các ứng dụng hoặc tham gia cơ sở dữ liệu.

Các cách khác để cải thiện hiệu suất MongoDB sau khi xác định các mẫu truy vấn chính của bạn bao gồm:

  • Lưu trữ kết quả của các truy vấn phụ thường xuyên trên các tài liệu để giảm tải đọc

  • Đảm bảo rằng bạn có các chỉ số trên bất kỳ lĩnh vực nào bạn thường xuyên truy vấn

  • Nhìn vào nhật ký của bạn để xác định các truy vấn chậm, sau đó kiểm tra các chỉ số của bạn

Thực hành tốt nhất #2: Xem xét mô hình và lập chỉ mục dữ liệu

MongoDB được ghi nhận cho lược đồ linh hoạt của nó, nhưng điều này không có nghĩa là bạn có thể bỏ qua các thực tiễn tốt nhất của thiết kế lược đồ. Bạn nên luôn luôn tìm ra lược đồ của mình khi bắt đầu một dự án để bạn giành chiến thắng phải trả lại mọi thứ sau này. Điều này áp dụng 100% cho các mô hình dữ liệu của bạn.

Trong khi thiết kế mô hình dữ liệu của bạn, bạn phải quyết định cách mô hình hóa mối quan hệ giữa dữ liệu. Thay vào đó, quyết định khi nhúng tài liệu hoặc tạo tham chiếu giữa các tài liệu riêng biệt trong các bộ sưu tập khác nhau, ví dụ, là một sự xem xét cụ thể của ứng dụng.

Một lợi thế lớn của các tài liệu JSON là chúng cho phép các nhà phát triển mô hình hóa dữ liệu tuy nhiên ứng dụng yêu cầu. Các mảng làm tổ và phụ cho phép bạn mô hình hóa các mối quan hệ phức tạp giữa dữ liệu bằng các tài liệu văn bản đơn giản.

Nhưng sử dụng MongoDB, bạn cũng có thể mô hình hóa:

  • cấu trúc phẳng, bảng và cột

  • Các cặp giá trị khóa đơn giản

  • Dữ liệu không gian địa lý

  • dữ liệu chuỗi thời gian

  • Các nút và cạnh của cấu trúc dữ liệu đồ thị được kết nối, v.v.

Mô hình dữ liệu là một chủ đề rộng lớn và rộng lớn mà bạn có thể dành nhiều tháng để học. Nếu bạn đã trú ẩn, đây là một vài tài nguyên có thể giúp ích:

  1. Tài liệu MongoDB bao gồm một phần tuyệt vời về mô hình dữ liệu, bắt đầu từ việc lên kế hoạch cho mô hình dữ liệu tài liệu của bạn và đi sâu vào chi tiết về các chi tiết cụ thể như nhúng và tham chiếu.

  2. Đại học MongoDB cung cấp một khóa đào tạo miễn phí về mô hình dữ liệu. Đây là một cách tuyệt vời để người mới bắt đầu bắt đầu với các mô hình dữ liệu thiết kế lược đồ và tài liệu.

Thực hành tốt nhất #3: Hãy thử nhúng và tham khảo

Một phần mở rộng tự nhiên của mô hình dữ liệu, nhúng cho phép bạn tránh các tham gia ứng dụng, giúp giảm thiểu các truy vấn và cập nhật.

Đáng chú ý, dữ liệu có mối quan hệ 1: 1 nên được nhúng trong một tài liệu. Dữ liệu với 1: Nhiều mối quan hệ trong đó các đối tượng "nhiều" xuất hiện hoặc được xem cùng với các tài liệu cha mẹ của họ cũng là những ứng cử viên tuyệt vời để nhúng. Bởi vì các loại dữ liệu này luôn được truy cập cùng nhau, việc lưu trữ chúng trong cùng một tài liệu chỉ có ý nghĩa.

Nhúng thường cung cấp hiệu suất tốt hơn cho các hoạt động đọc do loại địa phương dữ liệu này. Các mô hình dữ liệu được nhúng cũng cho phép các nhà phát triển cập nhật dữ liệu liên quan trong một hoạt động ghi duy nhất vì ghi tài liệu duy nhất là giao dịch.

Tuy nhiên, không phải tất cả 1: 1 và 1: Nhiều mối quan hệ là ứng cử viên tốt để nhúng vào một tài liệu. Đó là nơi mà việc tham khảo giữa các tài liệu trong các bộ sưu tập khác nhau xuất hiện.

Tham khảo có ý nghĩa hơn nhiều khi mô hình hóa nhiều: nhiều mối quan hệ. Tuy nhiên, bất cứ khi nào tham chiếu, ứng dụng của bạn phải phát hành truy vấn tiếp theo để giải quyết mọi tài liệu tham khảo. Điều này, đến lượt nó, đòi hỏi nhiều chuyến đi vòng hơn đến máy chủ.

Bạn nên xem xét việc tham khảo khi:

  • Một tài liệu thường được truy cập nhưng chứa dữ liệu hiếm khi được sử dụng. Việc nhúng sẽ chỉ tăng các yêu cầu trong bộ nhớ, vì vậy việc tham khảo có thể có ý nghĩa hơn.

  • Một phần của tài liệu thường được cập nhật và tiếp tục dài hơn, trong khi phần còn lại của tài liệu tương đối tĩnh.

  • Kích thước tài liệu vượt quá giới hạn tài liệu 16MB MongoDB. Điều này có thể xảy ra khi mô hình hóa nhiều: 1 mối quan hệ, chẳng hạn như đánh giá sản phẩm: sản phẩm chẳng hạn.

Thực hành tốt nhất #4: Xác định sử dụng bộ nhớ (dễ dàng hơn trong Atlas)

Như với hầu hết các cơ sở dữ liệu, MongoDB thực hiện tốt nhất khi bộ ứng dụng làm việc (ví dụ: các chỉ số và dữ liệu được truy cập thường xuyên) phù hợp với bộ nhớ mà không gặp vấn đề gì. Trong khi các yếu tố khác đóng một phần trong hiệu suất, kích thước RAM rõ ràng là sự cân nhắc quan trọng nhất để kích thước.

Khi một ứng dụng làm việc tập hợp phù hợp với RAM, hãy đọc hoạt động từ đĩa phải thấp. Nhưng nếu bộ công việc của bạn vượt quá RAM của kích thước hoặc máy chủ thể hiện, hoạt động đọc sẽ bắt đầu tăng lên. Nếu bạn nhận thấy điều này xảy ra, bạn có thể giải quyết vấn đề bằng cách chuyển sang một trường hợp lớn hơn với nhiều bộ nhớ hơn.

Hoặc bạn có thể phân vùng (shard) cơ sở dữ liệu của bạn trên nhiều máy chủ (nhiều hơn về điều này sau).

Định cỡ đúng bộ làm việc của bạn là rất quan trọng cho dù bạn đang chạy Atlas MongoDB hay tự mình quản lý MongoDB. Nếu bạn sử dụng Atlas, hãy nhớ luôn luôn xem lại tài liệu Lựa chọn Atlas và Lựa chọn ATLAS của mình để tính toán đúng kích thước của bộ làm việc của bạn.

Nó có giá trị chỉ ra rằng trong Atlas MongoDB, bộ nhớ mở rộng được tự động hóa và đơn giản. Ví dụ, bạn có thể chọn tham gia vào phân chia tự động cấp cụm cụm, điều này tự động điều chỉnh dung lượng tính toán để đáp ứng với các thay đổi thời gian thực trong nhu cầu ứng dụng.

Thực hành tốt nhất #5: Giám sát sao chép và chia rẽ

Không có cuộc thảo luận nào về hiệu suất tăng hoặc tỷ lệ ngang hoàn tất mà không đề cập đến việc sao chép, điều này làm tăng tính khả dụng của dữ liệu thông qua tỷ lệ ngang. Sao chép có thể dẫn đến hiệu suất tốt hơn và cũng cung cấp dự phòng, cung cấp nhiều bảo mật hơn.

Trong MongoDB, bản sao được thực hiện thông qua các bộ bản sao cho phép các nhà phát triển sao chép dữ liệu từ một máy chủ chính hoặc nút trên nhiều thứ hai. Điều này cho phép ứng dụng của bạn chạy một số truy vấn trên các thứ hai thay vì chính, tránh tranh chấp và dẫn đến cân bằng tải được cải thiện.

Bộ bản sao cung cấp một số lợi thế cho các nhà phát triển MongoDB:

  • Dự phòng và tính khả dụng của dữ liệu: Sao chép có thể rất hữu ích trong trường hợp các sự kiện thảm khốc như lỗi phần cứng hoặc sự cố máy chủ. Nếu một nút chính không thành công, quá trình bầu cử sẽ tự động bầu một nút chính mới khỏi các nút phụ còn lại. Replication can be very helpful in case of disastrous events like hardware failures or server crashes. Should a primary node fail, an election process will automatically elect a new primary node from the remaining secondary nodes.

  • Chia sẻ tải: Bộ bản sao cung cấp khả năng mở rộng tốt hơn cho các ứng dụng của bạn. Ví dụ, các nhà phát triển có thể định cấu hình các ứng dụng của họ để đọc từ nhiều máy chủ để giúp cân bằng tải giữa các bộ bản sao. Replica sets offer better scalability for your applications. As an example, developers can configure their applications to read from multiple servers to help with load balancing among replica sets.

  • Địa phương dữ liệu: Về hiệu suất, sao chép cũng cải thiện độ trễ để sử dụng đọc. Nếu bạn có cùng một dữ liệu trải ra trên nhiều máy chủ, dữ liệu đó có thể được truy cập tại vị trí gần nhất với người dùng cuối. In terms of performance, replication also improves latency for read usage. If you have the same data spread out across multiple servers, that data can be accessed at the location closest to the end user.

Các cụm Sharded trong MongoDB là một cách khác để có khả năng cải thiện hiệu suất. Giống như sao chép, Sharding là một cách để phân phối các bộ dữ liệu lớn trên nhiều máy chủ. Sử dụng những gì mà gọi là Khóa Shard, các nhà phát triển có thể sao chép các đoạn dữ liệu (hoặc Shards Shards) trên nhiều máy chủ. Các máy chủ này làm việc cùng nhau để sử dụng tất cả các dữ liệu.

Sharding đi kèm với một số lợi thế, bao gồm tỷ lệ ngang cho đọc/ghi cũng như tăng dung lượng lưu trữ và tính khả dụng cao hơn.

Hãy nhớ rằng các thực tiễn tốt nhất không ngừng cải thiện

Một lần nữa, đây là một danh sách không hiểu được các thực tiễn tốt nhất hiệu suất hàng đầu cho MongoDB. Như bất kỳ nhà phát triển cơ sở dữ liệu có kinh nghiệm nào cũng sẽ nói với bạn, có hàng ngàn và một điều bạn có thể làm để cải thiện hiệu suất và tất cả đều phụ thuộc vào ứng dụng chính xác của bạn.

Quan trọng hơn, luôn luôn nhớ rằng mô hình dữ liệu phù hợp, lập chỉ mục, nhúng và tham chiếu là những cân nhắc cơ bản. Giả sử bạn biết rõ các mẫu truy vấn của ứng dụng của mình, bạn sẽ thấy rằng bạn có thể có được hiệu suất vững chắc và rất nhiều dặm ngoài tính chất phân tán và nhân rộng của MongoDB.

Nếu tất cả những người khác thất bại ... chúng ta đã đề cập rằng MongoDB Atlas cũng có một cố vấn hiệu suất tích hợp? Nó có thể làm cho cuộc sống của bạn dễ dàng hơn rất nhiều nếu bạn không chắc chắn bắt đầu từ đâu.

Nội dung liên quan:

  • Hiệu suất thực tiễn tốt nhất Blog loạt: Mô hình dữ liệu MongoDB và kích thước bộ nhớ
  • Cách tạo cơ sở dữ liệu trong MongoDB
  • Hướng dẫn dành cho người mới bắt đầu: Cơ bản MongoDB
  • Tài liệu nhúng trong MongoDB
  • Ví dụ về việc sử dụng MongoDB

MongoDB có tìm kiếm nhanh không?

2. Truy vấn MongoDB nhanh như thế nào? Khá thật nhanh. Các truy vấn khóa hoặc chỉ mục chính sẽ chỉ mất vài mili giây.Pretty darn fast. Primary key or index queries should take just a few milliseconds.

MongoDB có tốt cho tìm kiếm không?

Nó cung cấp khả năng mở rộng cao, độ tin cậy và hiệu suất. MongoDB cũng sử dụng các chỉ mục dựa trên văn bản cho các truy vấn toàn văn, nhưng tìm kiếm là chậm và máy chủ tìm kiếm không cung cấp các tokenizer và trình phân tích như Elaticsearch.the search is slow, and the search server does not provide tokenizers and analyzers like Elasticsearch does.

MongoDB có trình tối ưu hóa truy vấn không?

Đối với một truy vấn, trình tối ưu hóa truy vấn MongoDB chọn và lưu trữ kế hoạch truy vấn hiệu quả nhất được cung cấp các chỉ mục có sẵn.Việc đánh giá kế hoạch truy vấn hiệu quả nhất dựa trên số lượng "đơn vị công việc" (công trình) được thực hiện bởi kế hoạch thực hiện truy vấn khi trình lập kế hoạch truy vấn đánh giá các kế hoạch ứng viên.the MongoDB query optimizer chooses and caches the most efficient query plan given the available indexes. The evaluation of the most efficient query plan is based on the number of "work units" ( works ) performed by the query execution plan when the query planner evaluates candidate plans.

Làm thế nào để bạn tăng tốc một Mongoose?

Làm thế nào để tối ưu hóa MongoDB & Mongoose cho hiệu suất..
Sử dụng các truy vấn nạc để có hoạt động.Đây có lẽ là điều tốt nhất bạn có thể làm để cải thiện hiệu suất của một truy vấn.....
Tạo các chỉ mục tùy chỉnh cho các truy vấn của bạn.....
Giảm thiểu các yêu cầu DB (Tránh. ....
Sử dụng .....
Chạy các hoạt động DB song song.....
Cache/tái sử dụng kết nối Mongoose ..