2012-11-18 38 views
21

Tôi muốn lưu trữ các giá trị enum trong bộ sưu tập MongoDB. Tôi có thể lưu trữ chúng hiệu quả dưới dạng chuỗi không? Nó sẽ ảnh hưởng đến hiệu suất chỉ số so với các giá trị enum như ints? Trình lập chỉ mục Mongo có tối ưu hóa các chỉ mục chuỗi trong trường hợp chúng chỉ chứa một vài tùy chọn cố định làm các giá trị chuỗi, để đạt được tốc độ tương tự như chỉ mục truy vấn bằng số nguyên được sắp xếp không?Enums trong MongoDB

Trả lời

20

Lưu trữ các giá trị enum trong MongoDB dưới dạng chuỗi là hoàn toàn tốt, và có, nếu bạn lập chỉ mục trường tôi mong đợi hiệu suất có thể so sánh với các truy vấn số nguyên được lập chỉ mục. Nó chắc chắn mang tính biểu cảm hơn là sử dụng các số nguyên.

Nhược điểm thực sự duy nhất là chúng sẽ mất nhiều không gian hơn nếu chuỗi enum của bạn hơi dài, nhưng đó là một mối quan tâm khá tầm thường.

+1

Có ai từng thực hiện bất kỳ phép đo hiệu suất nào liên quan đến điều này không? So sánh các chuỗi chậm hơn so với các số nguyên so sánh. Điều này có thể ảnh hưởng đến truy vấn cũng như chèn và xây dựng lại (index), mặc dù chỉ số này làm giảm đáng kể số lượng so sánh cần thiết. Không bao giờ đưa ra bất kỳ tuyên bố nào về hiệu suất mà không có điểm chuẩn. –