2015-05-18 44 views
6

Tôi muốn sử dụng PouchDB - CouchDB để lưu dữ liệu người dùng cho ứng dụng web của tôi, nhưng không thể tìm cách kiểm soát quyền truy cập cho mỗi người dùng. DB của tôi sẽ đơn giản bao gồm các tài liệu sử dụng id người dùng làm khóa. Tôi biết có một số giải pháp:Mỗi tài liệu kiểm soát truy cập người dùng cho PouchDB/CouchDB

  1. Một cơ sở dữ liệu cho mỗi người dùng - tuy nhiên nó đòi hỏi phải theo dõi bất cứ khi nào một người dùng mới muốn cứu dữ liệu để tạo ra một DB mới, và có thể tạo ra rất nhiều DBS;

  2. Proxy giữa máy khách và CouchDB - tuy nhiên tôi không muốn PouchDB đồng bộ hóa các thay đổi cho toàn bộ DB bao gồm tài liệu của người dùng khác trong yêu cầu _all_docs, _revs_diff đó.

Có đề xuất nào về kiểm soát quyền truy cập của người dùng cho pouchDB cho cơ sở người dùng khoảng 1 triệu (người dùng hoạt động chỉ khoảng 10.000 người) không?

+2

PouchDB chắc chắn không phải là lựa chọn tốt cho DB tài liệu 1 triệu. Sử dụng CouchDB. Bạn có thể xem https://github.com/ermouth/covercouch - nó thực hiện ACL cho Couch giữ nguyên API gốc. – ermouth

+0

@ bìa vỏ ngoài trông rất thú vị nhưng không may bị bỏ rơi. Bạn có bất cứ ý tưởng nào để đi cho một cái gì đó tương tự như năm 2017? – oskarth

Trả lời

2

Chủ đề của a million or more databases đã xuất hiện trong danh sách gửi thư trong quá khứ. Kết luận là nó phụ thuộc vào cách hệ điều hành của bạn giao dịch với nhiều tệp đó. CouchDB chỉ truy cập các phần của tệp .couch khi được yêu cầu. Hiệu suất liên quan đến tốc độ tìm kiếm, mở, truy cập và đóng tệp đó nhanh như thế nào.

Có thủ thuật cho một số hệ thống tập tin giống như đặt / delimiters trong tên cơ sở dữ liệu - mà sẽ gây CouchDB để lưu trữ chúng trong phù hợp với cấu trúc thư mục như groupA/userA.couch hoặc sử dụng tên cơ sở dữ liệu email kiểu com/bigbluehat/byoung.couch (hoặc một số tương tự).

Nếu không đủ, Apache CouchDB 2.0 sẽ mang mã BigCouch (sử dụng IBM Cloudant) để cung cấp CouchDB tự động hoàn toàn. Nó chưa được thực hiện, nhưng nó sẽ cung cấp khả năng mở rộng trên nhiều nút bằng cách sử dụng hệ thống tích trữ kiểu Amazon Dynamo.

Tùy chọn khác là thực hiện phân vùng dựa trên tên người dùng của riêng bạn giữa nhiều máy chủ CouchDB hoặc sử dụng IBM Cloudant (được xây dựng cho cấp độ này).

Tất cả các tùy chọn này cung cấp cùng một giao thức sao chép Apache CouchDB và sẽ hoạt động tốt với PouchDB nằm trên máy tính, điện thoại hoặc máy tính bảng của người dùng.

Thiết bị của người dùng sau đó sẽ có cơ sở dữ liệu riêng của họ +/- any share databases. Các ứng dụng trên hàng triệu thiết bị người dùng này sẽ chỉ có khả năng mở rộng nội dung của riêng chúng (còn gọi là không gian ổ đĩa cứng) cần được quan tâm. Ứng dụng sẽ sao chép trực tiếp vào cơ sở dữ liệu người dùng "đám mây" để sao lưu, sử dụng web, v.v.

Hy vọng điều gì đó trong đó có vẻ đầy hứa hẹn. :)

+1

Cũng có nghĩa là đề cập đến dự án 'couch-peruser' - hiện là một phần của dự án Apache CouchDB https://github.com/apache/couchdb-peruser – BigBlueHat

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