Chà, tôi không chắc liệu MapReduce có giải quyết được vấn đề không, nhưng chắc chắn sẽ không phải là MapReduce một mình giải quyết tất cả những câu hỏi mà bạn nêu ra. Nhưng đây là những điều quan trọng cần tính đến và điều đó khả thi khi có độ trễ thấp như vậy đối với các truy vấn từ tất cả các TB dữ liệu này trong các máy khác nhau:
- điện toán phân tán: bằng cách được phân phối không có nghĩa là các chỉ mục được phân phối đơn giản trong các máy khác nhau, chúng thực sự được sao chép dọc theo các cụm khác nhau, cho phép nhiều người dùng thực hiện các truy vấn khác nhau với thời gian truy xuất thấp (vâng, các công ty lớn có thể chi trả cho số tiền đó của máy móc);
- bộ nhớ đệm: lưu trữ giúp giảm đáng kể thời gian thực hiện, có thể là cho bước thu thập dữ liệu, cho việc truy xuất các trang hoặc để xếp hạng và cấm kết quả;
- rất nhiều điều chỉnh: tất cả các thuật toán / giải pháp rất hiệu quả ở trên và chỉ có thể có hiệu quả nếu việc triển khai cũng hiệu quả. Có hàng tấn tối ưu hóa (mã hóa cứng), chẳng hạn như địa phương tham chiếu, nén, lưu trữ; tất cả chúng thường được hoan nghênh cho các phần khác nhau của quá trình chế biến.
Xem xét điều đó, hãy thử giải quyết các câu hỏi của bạn:
nhưng tôi tưởng tượng rằng kết quả của mỗi truy vấn có thể được lập chỉ mục là không khả thi
Vâng, nó sẽ là, và thực sự không thể có kết quả cho mỗi truy vấn có thể . Có một số lượng vô hạn các thuật ngữ trên thế giới (ngay cả khi bạn cho rằng chỉ các thuật ngữ được viết đúng chính tả mới được nhập) và có một số lượng truy vấn theo cấp số nhân từ các n -> inf
thuật ngữ này ( 2^n
). Vậy những gì đã được thực hiện? Bộ nhớ đệm. Nhưng nếu có quá nhiều truy vấn / kết quả, cái nào cần lưu trữ? Chính sách lưu trữ. Các truy vấn thường xuyên nhất / phổ biến / có liên quan cho người dùng là những truy vấn được lưu trong bộ nhớ cache.
độ trễ phần cứng trong phần cứng của Google sẽ rất lớn? Ngay cả khi dữ liệu trong Google đều được lưu trữ trong ổ SSD / s
Ngày nay, với các bộ xử lý phát triển cao như vậy, mọi người có xu hướng nghĩ rằng mọi tác vụ có thể phải hoàn thành trong vòng một giây (hoặc ít hơn) và xử lý rất nhiều dữ liệu, phải được xử lý bởi các bộ xử lý cực kỳ mạnh mẽ với nhiều lõi và nhiều bộ nhớ. Tuy nhiên, một điều duy nhất thị trường cai trị là tiền, và các nhà đầu tư không quan tâm đến việc lãng phí nó. Vậy những gì đã được thực hiện?
Sở thích thực sự là có nhiều máy móc, mỗi máy sử dụng bộ xử lý đơn giản / có thể truy cập (về chi phí), giúp giảm giá xây dựng vô số cụm. Và vâng, nó làm việc. Nút cổ chai chính luôn sôi xuống đĩa, nếu bạn xem xét các phép đo hiệu suất đơn giản . Nhưng một khi có rất nhiều máy móc, người ta có thể đủ khả năng tải mọi thứ lên bộ nhớ chính, thay vì làm việc trên đĩa cứng.
Thẻ nhớ rất đắt đối với chúng ta, chỉ là con người, nhưng chúng rất rẻ cho các doanh nghiệp mua nhiều thẻ như vậy cùng một lúc. Vì nó không tốn kém, nên có nhiều bộ nhớ cần thiết để tải các chỉ mục và giữ bộ nhớ cache trong tay không phải là vấn đề. Và vì có rất nhiều máy móc, không cần bộ xử lý siêu nhanh, vì bạn có thể truy vấn trực tiếp đến các địa điểm khác nhau và có các cụm máy chịu trách nhiệm tham dự các vùng địa lý cụ thể , cho phép lưu trữ dữ liệu chuyên dụng hơn và phản hồi tốt hơn lần
MapReduce có giúp giải quyết vấn đề này không?
Mặc dù tôi không nghĩ rằng việc sử dụng hay không MapReduce là thông tin bị hạn chế trong Google, tôi không nói về điểm này. Tuy nhiên, việc triển khai MapReduce của Google (chắc chắn không phải là Hadoop) phải có nhiều tối ưu hóa, nhiều khía cạnh liên quan đến các khía cạnh được thảo luận ở trên. Vì vậy, kiến trúc của MapReduce có thể giúp hướng dẫn cách tính toán được phân phối vật lý, nhưng có nhiều điểm khác được xem xét để chứng minh tốc độ như vậy trong thời gian truy vấn.
Được rồi, vì vậy tôi hiểu rằng các tìm kiếm phổ biến có thể được lưu trong bộ nhớ. Nhưng những gì về tìm kiếm không phổ biến?
Biểu đồ dưới đây trình bày một đường cong về cách các loại truy vấn xảy ra. Bạn có thể thấy rằng có ba loại tìm kiếm chính, mỗi loại tìm kiếm chiếm khoảng 1/3 khối lượng truy vấn (khu vực bên dưới đường cong). Cốt truyện cho thấy luật sức mạnh và củng cố thực tế rằng các truy vấn nhỏ hơn là phổ biến nhất. Thứ ba thứ hai của các truy vấn vẫn khả thi để xử lý, vì chúng giữ một vài từ. Nhưng tập hợp các truy vấn được gọi là tối nghĩa , thường bao gồm các truy vấn của người dùng không có kinh nghiệm, không phải là một phần không đáng kể của các truy vấn.
Và có không gian cho các giải pháp mới. Vì đó không chỉ là một hoặc hai truy vấn (mà là một phần ba trong số chúng), chúng phải có kết quả phù hợp . Nếu bạn gõ một cái gì đó nhiều quá che khuất trong một tìm kiếm Google, nó sẽ không mất nhiều thời gian để trả về một danh sách kết quả, nhưng có lẽ hầu hết sẽ cho bạn thấy một cái gì đó nó suy ra bạn muốn nói. Hoặc có thể chỉ đơn giản là không có tài liệu nào có các thuật ngữ như vậy - hoặc thậm chí cắt giảm tìm kiếm của bạn xuống còn 32 từ (điều này vừa xảy ra với tôi trong một bài kiểm tra ngẫu nhiên ở đây).
Có hàng tá các heuristic đáng khen ngợi, có thể bỏ qua một số từ hoặc cố gắng chia truy vấn thành các từ nhỏ hơn và thu thập các kết quả phổ biến nhất . Và tất cả các giải pháp này có thể được điều chỉnh và điều chỉnh để tôn trọng thời gian chờ đợi khả thi của, giả sử, sau đó ít hơn một giây? : D