5

Chúng tôi có một ứng dụng Java chạy trên công cụ ứng dụng của google. Có một loại gọi là Liên hệ. Sau đây là sơ đồ mẫuCách tốt nhất để thiết kế kho dữ liệu công cụ ứng dụng và mô hình tìm kiếm văn bản

Contact 
{ 
    long id 
    String firstName 
    String lastName 
    ... 
} 

Trên đây là mô hình existig, hỗ trợ vài yêu cầu chúng tôi đang lưu trữ đối tượng này cả trong kho dữ liệu và văn bản tìm kiếm

Bây giờ chúng tôi muốn tích hợp danh bạ với các dữ liệu quan điểm trang của họ.

Mỗi liên hệ có thể có hàng ngàn lượt xem, hồ sơ hoặc thậm chí hàng triệu đối với một số địa chỉ liên lạc

Tiếp theo là trang mẫu lần đối tượng [Lưu ý: Chúng tôi không có đối tượng này như của bây giờ, điều này chỉ được cung cấp thông tin về truy cập vào trang]

PageVisit 
{ 

    long id 
    String url 
    String refUrl 
    int country 
    String city 
    .... 
} 

Chúng tôi có một yêu cầu, mà cần một truy vấn trên các đặc tính cốt lõi liên lạc và trang được truy cập dữ liệu của mình

cho ví dụ:

select * from Contact where firstName = 'abc' and url = 'cccccc.com'; 
select * from Contact where firstName = 'abc' or url = 'cccccc.com'; 

Để viết loại truy vấn này, chúng tôi cần cả thuộc tính lõi liên hệ và trang được truy cập cần có sẵn trong đối tượng Địa chỉ liên hệ nhưng liên hệ có thể có số lượt xem trang số lớn. Vì vậy, điều này sẽ vượt qua giới hạn kích thước tối đa của thực thể

Vì vậy, cách thiết kế mô hình liên hệ trong loại tình huống này cả trong kho dữ liệu và tìm kiếm văn bản.

Cảm ơn

Trả lời

1

Cloud Datastore không hỗ trợ kết nối, vì vậy bạn sẽ cần xử lý điều này theo cách nào đó từ mã máy khách.

2 phương thức xử lý này là:

Chuẩn hóa ngược Contact bạn cần phải tìm kiếm vào PageVisit:

PageVisit 
{ 

    long id 
    String firstName // Denormalized from Contact 
    String url 
    String refUrl 
    int country 
    String city 
    .... 
} 

này đòi hỏi bạn phải tạo ra một chỉ số tổng hợp:

- kind: PageVisit 
    ancestor: no 
    properties: 
    - name: firstName 
    - name: url 

Hoặc chạy nhiều truy vấn

select id from Contact where firstName = 'abc' 

select * from PageVisit where contactId={id} and url = 'cccccc.com'; 
select * from PageVisit where contactId={id} or url = 'cccccc.com'; 

này đòi hỏi bạn phải tạo ra một chỉ số tổng hợp:

- kind: PageVisit 
    ancestor: no 
    properties: 
    - name: contactId 
    - name: url 

cuối cùng sang một bên: Tùy thuộc vào cách lớn trang web của bạn, nó có thể là giá trị xem xét Cloud Bigtable cho dữ liệu lượt xem trang. Đó là một giải pháp tốt hơn để viết các khối lượng công việc kiểu OLAP cao.

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