14

Taken từ Python NDB Overview:So sánh tốc độ của NDB và DB (trên Datastore bản sao cao) là gì?

Khi ứng dụng đọc một thực thể, thực thể đó là tự động lưu trữ; điều này cho phép đọc nhanh (và không tốn kém) cho các thực thể thường xuyên đọc.

...

Hàm NDB ghi dữ liệu (ví dụ, put()) trả về sau khi vô hiệu hóa bộ nhớ cache; Giai đoạn Áp dụng xảy ra không đồng bộ.

Trong xem trên Youtube, Google I/O 2011: More 9s Please: Under The Covers of the High Replication Datastore, lúc 13: 11-ish, latencies trung bình là:

Master/Slave:

  • đọc: 15ms
  • Viết: 20ms

Replication cao:

  • đọc: 15ms
  • Viết: 45ms

Làm thế nào đáng kể không NDB ảnh hưởng đến tốc độ này, từ những ứng dụng quan sát tôi có?

Chỉnh sửa: Đặc biệt tò mò về thống kê thời gian (tính bằng mili giây).

Điểm thêm: Tôi cũng nghe Nick Johnson tham khảo các truy vấn tham gia xung quanh 160ms mỗi (năm 2009) [link] Liệu NDB cung cấp bất kỳ lợi ích tốc độ trên các truy vấn?

Trả lời

10

Sử dụng NDB làm cho các cuộc gọi kho dữ liệu của bạn xuất hiện, từ quan điểm của ứng dụng, nhanh hơn đáng kể.

ĐỌC: Kịch bản trường hợp tốt nhất, lần đọc được tạo từ bộ nhớ cache hoặc memcache. Trong hầu hết các trường hợp, điều này sẽ nhanh hơn đáng kể so với việc đọc từ kho dữ liệu.

VIẾT: Phương thức đặt/ghi NDB trả về ngay sau khi vô hiệu bộ nhớ cache. Đây là cách nhanh hơn so với viết bình thường. Vì vậy, từ quan điểm của ứng dụng, nó khá nhanh. Tuy nhiên, ghi thực tế được thực hiện không đồng bộ.

NDB vs DB (Nhân rộng cao): Xét về tốc độ từ góc nhìn của ứng dụng, NDB phải là một chiến thắng rõ ràng.

+0

Cảm ơn bạn đã trả lời nhanh! Tôi đặc biệt quan tâm đến thời gian, tính bằng mili giây. Chỉnh sửa bài đăng để phản ánh điều đó ngay bây giờ. :) – wTyeRogers

+0

@wTyeRogers Nếu bạn muốn biết các con số chính xác, bạn sẽ phải làm các tiêu chuẩn của riêng bạn. –

+0

@NickJohnson, tuyệt vời; cảm ơn! Vì đây là bài đăng Stack Overflow đầu tiên của tôi, tôi có câu hỏi liên quan đến nghi thức không có trong Câu hỏi thường gặp: Tôi có chỉnh sửa bài đăng của Albert để bao gồm số liệu thống kê hay tôi đăng câu trả lời của riêng mình? (Nó chỉ cảm thấy một chút lẻ để gửi một câu trả lời cho câu hỏi của riêng tôi ..) – wTyeRogers

18

Bạn sẽ phải điểm chuẩn cho chính mình - thời gian phụ thuộc vào nhiều yếu tố, như kích thước và độ phức tạp của thực thể: nhiều thuộc tính hoặc nhiều mục hơn trong thuộc tính lặp lại -> phức tạp hơn.

Các số bạn trích dẫn thực sự cũ và có thể không còn phản ánh thực tế; kinh nghiệm của hầu hết người dùng là HRD không chậm hơn so với M/S, trung bình (một phần vì M/S có khả năng thay đổi cao hơn nhiều).

Có một số tiêu chuẩn NDB được thực hiện tại đây: http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118 - nhưng không so sánh các con số với db cũ.

Bạn có thể sử dụng Appstats để nhanh chóng thực hiện một số thời gian hoạt động trong ứng dụng thực.

+4

Điều cần biết cho bài đăng Chồng tràn đầu tiên của tôi! Tôi đã bí mật hy vọng rằng _you_ sẽ là một trong những người phản hồi, với kiến ​​thức thân mật của bạn về NDB và khả năng phân tích số liệu thống kê của bạn với cái nhìn X-Ray về Python - một sự kết hợp chết người cho câu hỏi này. _Cảm ơn bạn_ để làm nổi bật một số điểm phức tạp và liên kết rất hữu ích. – wTyeRogers

Các vấn đề liên quan