Không có một bản dịch trực tiếp. Kho dữ liệu thực sự không có khái niệm cập nhật; tất cả những gì bạn có thể làm là ghi đè các thực thể cũ với một thực thể mới tại cùng một địa chỉ (khóa). Để thay đổi một thực thể, bạn phải lấy nó từ kho dữ liệu, sửa đổi nó cục bộ, và sau đó lưu nó trở lại.
Cũng không tương đương với toán tử LIKE. Trong khi kết hợp ký tự đại diện là có thể với một số thủ thuật, nếu bạn muốn kết hợp '% Salt%' bạn phải đọc từng thực thể duy nhất vào bộ nhớ và thực hiện so sánh chuỗi cục bộ.
Vì vậy, nó sẽ không hoàn toàn sạch sẽ hoặc hiệu quả như SQL. Đây là một sự cân bằng với hầu hết các cửa hàng đối tượng phân tán, và kho dữ liệu cũng không ngoại lệ.
Điều đó nói rằng, the mapper library có sẵn để tạo điều kiện cập nhật hàng loạt như vậy. Thực hiện theo ví dụ và sử dụng một cái gì đó như thế này cho hàm process
của bạn:
def process(entity):
if entity.city.startswith('Salt'):
entity.city = entity.city.replace('Salt', 'Olympic')
yield op.db.Put(entity)
Có các lựa chọn thay thế khác ngoài công cụ lập bản đồ. Mẹo tối ưu hóa quan trọng nhất là cập nhật hàng loạt các bản cập nhật của bạn; không lưu lại từng thực thể được cập nhật riêng lẻ. Nếu bạn sử dụng trình đặt bản đồ và sản lượng, điều này sẽ được xử lý tự động.
Nguồn
2011-11-19 22:11:40
Drew- cảm ơn rất nhiều cho các tham chiếu mapper-trông giống như một cái gì đó tôi sẽ muốn tìm hiểu về. – Yarin