Chỉ mục ký tự đại diện mongodb
Bài viết thuộc quyền Phạm Quang Minh - Minh Monmen. Techmaster đã đăng bài có sự cho phép của tác giả Show
Link bài viết gốc https. //kipalog. com/posts/Nghe-thuat-index-MongoDB--5-ke-sach-co-the-cac-ha-chua-biet Thầy Phạm Quang Minh hiện tại là giảng viên Techmaster trong các Khoa Lộ trình đào tạo DevOps cho cá nhân và doanh nghiệp.
Chắc chắn các huynh đệ dev backend bây giờ đã không còn xa lạ gì với 1 cơ sở dữ liệu hết sức phổ biến là mongodb và ai cũng giắt lưng sau lưng dăm ba tuyệt chiêu với cơ sở dữ liệu thần thánh này rồi đúng không? Hãy bắt đầu
điều đầu tiên đầu tiênKhoan đã không làm thế nào. Hãy cùng điểm qua 1 chút về nhà chiến lược gia đại tài mà chúng ta không biết mặt (chính là ta). Tại hạ tên Minh họ Monmen, từng được giang hồ đồn là với nhiều tên dị hợm như Minh béo, Minh mô mần, Minh mũm mĩm,. nhưng với vẻ ngoài đẹp trai cùng tài chém gió kiệt xuất biến không thành có, tại hạ đã làm rất nhiều anh hùng trong thiên hạ Đọc đến dòng này mà tưởng có gì mà kinh khủng. Nhưng mà không có đâu, chỉ là nhân ngày đầu xuân năm mới, tại hạ cũng thu xếp lại trí nhớ lộn xộn của bản thân và nhận ra nó cần sắp xếp lại nên mở bát luôn bằng 1 bài đánh index mongodb cho ngăn nắp. Đây là 1 trong những kiến thức tại hạ tâm đắc nhất được đúc kết từ 4 năm sử dụng mongodb cho tới giờ Kính mời các huynh đệ theo dõi Kế sách 1. Nhất hạ chỉ số song trường (hay còn gọi là nhất hạ hỏa song điêu)Theo thư tịch cổ về mongodb thì chiếc DB thần thánh này thường chỉ hỗ trợ duy nhất 1 index cho 1 truy vấn. (Các hạ đừng nhầm lẫn với việc không hỗ trợ nhiều index 1 truy vấn nha, nó có hỗ trợ nhưng chỉ trong 1 số trường hợp hạn chế). Chính vì vậy mà trường phái đánh index cho mongodb trở nên thịnh hành với chỉ số hỗn hợp chiêu thức (khác với hệ sql như mysql thường thịnh hành chỉ số 1 trường). Chiêu thức đánh index này cho phép các huynh đệ đánh 1 index sử dụng nhiều trường thay vì 1. Chính vì vậy chỉ cần 1 mục lục là có thể thoải mái thoải mái hỗ trợ cho thắc mắc của các huynh đệ Trường bài hát chỉ mục hạ nhất là kế sách tận hưởng 1 chỉ mục tổng hợp để giải quyết vấn đề của truy vấn trên nhiều trường Điều kiện thi công
Cách thức phát triển Xác định trường số thường xuyên được sử dụng và đưa vào chỉ mục
Specify thứ tự của các trường trong chỉ mục. Nói chung, có 1 số cách xác định mức độ ưu tiên cho việc đặt thứ tự như sau
Specify the sort of the field in index. This is to support for too sort. Theo đó
Lưu ý
Nghệ thuật ở đây chính là việc các huynh đệ phải cân nhắc lợi hại của việc thay đổi thứ tự các lĩnh vực khi đánh index. Có 1 số nhận định mà các huynh đệ có thể tham khảo
Xem thêm tại https. // tài liệu. mongodb. com/manual/core/index-compound/ Kế sách 2. Ve exit hashed (aka ve exitic)Đôi khi huynh đệ chúng ta phải đối mặt với những trường chứa những dòng văn bản lớn, kiểu như 12, 13, 14, 15. mà đặc điểm của nó là rất dài. Những trường này thường xuất hiện khi tìm kiếm chính xác. Thế nhưng đánh chỉ mục những trường văn bản này lại có những vấn đề
Vì sao phải vượt qua kẻ địch mạnh như hổ danh này? Rất đơn giản, hãy sử dụng chiêu thức đã thoát băm. Ta sẽ tránh mặt mạnh nhất của đối thủ là độ dài, tạo 1 vỏ bọc là đánh chỉ mục cho trường này nhưng thật ra là chúng ta sẽ băm giá trị của chúng khi đưa vào chỉ mục. Nếu trường có giá trị dài hơn 1024 ký tự thì vẫn sẽ lập chỉ mục là bình thường, đồng thời hiệu quả lưu trữ của chỉ mục tăng lên rõ ràng khi dung lượng giảm đáng kể
Điều kiện thi công
Cách thức phát triển Thật may mắn là mongodb Hỗ trợ chúng ta công việc này 16, tất cả công việc chúng ta cần làm là tạo ra 1 chỉ mục được băm như sau
Lưu ý
Usecase thường gặp nhất khi sử dụng chiêu thức này thường là ở các hệ thống xác thực khi tìm kiếm 1 bản ghi trong db với 1 chuỗi mã thông báo dài ngoằng Xem thêm tại https. // tài liệu. mongodb. com/manual/core/index-hashed/ Kế sách 3. Mượn tiền tố hoàn hồn duy nhất (hay còn gọi là mượn xác hoàn hồn)Chỉ mục duy nhất trên 1 chuỗi vốn được coi là đau đầu trong kỹ thuật đánh chỉ mục do nó làm chậm đi rất nhiều quá trình chèn và cập nhật dữ liệu phải đảm bảo tính duy nhất, cộng thêm với việc chỉ mục duy nhất không được sử dụng băm . Do đó, chỉ mục duy nhất dựa trên chuỗi sẽ được xử lý tương ứng với 1 trường bình thường và sẽ rất nhiều dung lượng Đây là kẻ địch mà chúng ta không thể tránh khỏi, cũng không có cách nào làm vòng qua nó được khi yêu cầu bài toán đã đặt ra thế. Tuy nhiên tại đã hạ nghiệm ra 1 chiêu thức biến chiếc chỉ số độc nhất vô nhị nặng nề trở nên hữu ích hơn chính là tiền tố độc nhất vô nhị Bản chất của chiêu thức này chính là việc sử dụng những thông tin trong chỉ mục duy nhất để phục vụ cho 1 mục đích khác. Qua đó tận dụng được khả năng tìm kiếm theo tiền tố của chỉ mục duy nhất và tăng khả năng sử dụng của nó Điều kiện thi công
Cách thức phát triển Tạo khóa duy nhất bằng cách đưa ra các trường có giá trị tìm kiếm và có mức độ phân tán lớn lên khóa đầu. Ví dụ khóa duy nhất là sự kết hợp của 1 số thông tin. item_id, other_id,. ,loại, user_id. Vì số lượng thành tố không được xác định nên tại hạ chuỗi khóa chứ không sử dụng các trường riêng lẻ với chỉ số phức hợp khóa duy nhất. 17Việc sắp xếp này tương tự như sắp xếp thứ tự 1 chỉ mục phức hợp, khi đưa ra những dữ liệu cần tìm kiếm lên phía trên, cung cấp các dữ liệu ít quan trọng hơn phía dưới. Ở đây là tại hay hạ tầng tìm kiếm theo 18, 19, còn user_id không cần thiết vì đã lưu trữ bên ngoài và chỉ mục bên ngoàiNhư vậy, khi tìm kiếm toàn bộ các bản ghi có giá trị 20 sẽ có dạng tìm kiếm theo Regex như sau 1Hay sâu hơn đến 21 2Với chỉ mục duy nhất dựa trên chỉ mục phức hợp thì cách làm tương tự, tận dụng các trường là tiền tố của chỉ mục Lưu ý
Các kế hoạch này thường được hạ sử dụng để tận dụng nguồn lực, sử dụng trong các trường hợp cần cập nhật hoặc xóa hàng dựa trên 1 dữ liệu xuất hiện trong khóa duy nhất nhưng không cần xuất hiện ở bên ngoài (hoặc có ở bên ngoài nhưng không cần thiết) Xem thêm tại https. // tài liệu. mongodb. com/manual/reference/operator/query/regex/#index-use Kế sách 4. Diệu giá ly chỉ (hay còn gọi là điệu hổ ly sơn)Nhớ ngày xưa Tôn Sách muốn đánh chiếm Lư Giang nhưng lại húc phải binh hùng tướng mạnh của Lưu Huân đang trấn thủ. Lúc đó Tôn Sách đã sử dụng kế dụ Lưu Huân xuất binh đi đánh Thượng Liễu để nhân cơ hội đánh úp Lư Giang. Đó gọi là kế Điệu hổ ly sơn Ngày nay đứng trước một thế lực cực kỳ mạnh mẽ đó là chỉ số những trường ít giá trị như 8, 23, 7,. rất kém hiệu quả và dung lượng lớn trên các bộ sưu tập lớn. Tại hạ cũng đã sử dụng kế sách Điệu giá trị ly chỉ số nhằm làm suy yếu dung lượng của chỉ mục, từ đó làm cho chỉ số Ít dung lượng hơn và hiệu quả hơnCách lập chỉ mục này được gọi là chỉ mục một phần
Điều kiện thi công Kế hoạch này được thi triển có hiệu quả trong 1 số bình tình như sau
Cách thức phát triển Xác định số lượng tối thiểu và đặt bộ lọc điều kiện.
4Lưu ý
Điều trị chỉ mục giá trị được tại hạ thi phát triển rất hiệu quả trên các bộ sưu tập hàng chục triệu tới hàng trăm triệu bản ghi với dung lượng chỉ mục chỉ khoảng vài MB đổ lại khi đã lọc được giá trị tối thiểu để cho vào bộ lọc. Việc tiết kiệm điện dung lượng của chỉ số rất quan trọng trong công việc chắc chắn mongodb sẽ ghép các chỉ số của chúng ta vào ram, từ đó nâng cao hiệu quả xử lý chỉ số Xem thêm tại https. // tài liệu. mongodb. com/manual/core/index-partial/ Kế sách 5. Vô chỉ thắng hữu chỉ (aka vô chiêu thắng hữu chiêu)Kế sách cuối cùng và cũng là bí đao thượng thừa của trưởng môn phái mongo tại hạ đúc kết đơn giản là Vô chỉ số thắng hữu chỉ số. Tuy rút gọn nhưng kế sách này có bảy bảy bóng chín cách biến hóa và rất khó bắt. Tại hạ hiện tại cũng chỉ nắm được 1 số cách biến hóa cơ bản của kế sách này, và khi thực hiện nó cũng vẫn còn bập bõm lắm Nói một cách ngắn gọn. Chỉ số hiệu quả nhất là KHÔNG CÓ CHỈ SỐ vietsub. The best index effect is not index Nói thông tin tức thời là sao? Viết hiệu suất Làm 1 phép toán cơ bản 1 tôi. 1 hành động đọc hoặc ghi vào đĩa chèn 1 bản ghi = 1 IO (dữ liệu) + n IO (n là số chỉ mục) Càng nhiều chỉ mục, ta càng cần nhiều thao tác IO để thực thi với mỗi hành động. Điều này làm giảm tốc độ ghi Vì vậy nên
Kho Không cần nhắc đến disk storage cho index (do disk cực rẻ) thì index cần được lưu trong ram để cho kết quả tìm kiếm tốt nhất, do vậy tạo càng nhiều index hay index càng nặng thì dung lượng ram sử dụng càng tăng. Để index tràn ram là thứ cuối cùng các vị huynh đệ muốn xảy ra trên con mongo của mình Làm sao để tiết kiệm điện?
Kinh nghiệm cá nhân Sau con đường đi lấy kinh đầy gai và đau khổ, tại hạ đã lĩnh hội được 1 số chân kinh sau
Tổng kếtNhờ áp dụng những kế sách thần thánh trên, tại hạ quản trị thành công cơ sở dữ liệu có nhiều hoạt động nhất và nặng nề nhất mạng xã hội GAPO chỉ với 2 CPU + 12GB ram + 3000 IOPS disk. Hiện tại thì dữ liệu cũng tầm trăm triệu, nặng trăm GB, hàng ngày thêm, sửa, xóa hàng triệu bản ghi và sử dụng thường trực ~ 2000 IOPS Tới đây, tại hạ còn sức tàn lực kiệt phải kết lại cuốn tàn thư đã truyền này. Rất mong các vị huynh đệ bạt bạt trên giang hồ có tuyệt chiêu nào hay, hay món võ nào tâm đắc có thể đóng góp ý kiến để lúc được hạ tầm tầm mắt. Xin cảm ơn |