Tôi đã sử dụng NoQuery DB được một thời gian và đây là đóng góp của tôi cho chủ đề:
Một trường hợp sử dụng tuyệt vời cho cơ sở dữ liệu NoQuery là một ứng dụng để tạo thống kê và / hoặc tạo báo cáo , đặc biệt khi dữ liệu được cung cấp từ nguồn của bên thứ ba.
Trong tình huống như vậy, cơ sở dữ liệu NoQuery có thể là một lựa chọn tuyệt vời
Hãy xem xét, ví dụ, MongoDB :
Khi bạn có dữ liệu của mình bằng JSON, (nó có thể đến từ API của bên thứ ba hoặc được xuất từ ứng dụng sql) trong MongoDB khá dễ dàng để nhập và cập nhật dữ liệu JSON trong cơ sở dữ liệu; ví dụ sử dụng mongoimport
tiện ích dòng lệnh
Tại thời điểm này rất đơn giản để xây dựng các truy vấn động với tính năng lọc và nhóm, rất phù hợp với loại ứng dụng này.
Ví dụ: sử dụng Khung tổng hợp :
$pipeline = [];
//filter by date
$pipeline[] = [ '$match' => [ 'created_at' => [ '$gte' => $starDate, '$lte' => $endDate ] ] ];
//if we want to filter by a specific field, we add the filter to the pipeline array
if( $filters->isFilterByField() )
$pipeline[] = [ '$match' => [ 'field' => $fieldValue ] ];
//group the results by date and get the count
$pipeline[] = [ '$group' => [ '_id' => '$created_at', 'num_elements' => [ '$sum' => 1 ] ] ];
return $collection->aggretate( $pipeline );
Tôi muốn chỉ ra sự dễ dàng mà chúng ta có thể thêm / xóa bộ lọc một cách ngẫu nhiên bằng cách sử dụng các cấu trúc dữ liệu php và tránh việc nối chuỗi tẻ nhạt để xây dựng các truy vấn của chúng tôi. Với phương pháp này, việc thêm / xóa bộ lọc dinamycally cũng dễ như thêm / xóa các phần tử khỏi một mảng
Một lợi ích tuyệt vời khác đến từ việc một giải pháp như thế này có thể nhanh hơn so với sử dụng cơ sở dữ liệu quan hệ , nơi chúng ta phải thực hiện các phép nối với các bảng khác nhau để có được tất cả dữ liệu chúng ta cần
Ngoài ra, trường hợp sử dụng này là tối ưu vì tránh tất cả các giới hạn chính của cơ sở dữ liệu NoQuery:
Thiếu giao dịch: Ứng dụng không thực hiện ghi mà chỉ đọc, vì vậy chúng tôi không cần giao dịch
Thiếu liên kết giữa các bảng: Chúng tôi không cần tham gia, vì chúng tôi có thể sử dụng dự phòng để lưu trữ dữ liệu không chuẩn hóa của chúng tôi trong các bộ sưu tập. Vì chúng tôi chỉ đọc dữ liệu, chúng tôi không cần phải lo lắng về việc đồng bộ hóa dữ liệu không chuẩn hóa giữa các bản cập nhật.
Bằng cách này, chúng tôi có thể tập trung vào việc lưu trữ dữ liệu với sự dư thừa theo cách phù hợp với các truy vấn của chúng tôi , sẽ tập trung vào các bộ sưu tập duy nhất.
Tôi chỉ viết điều này bởi vì tôi đã đọc một cái gì đó như thế một vài lần trước đây, nó sẽ giúp tôi tiết kiệm thời gian để thực hiện các nghiên cứu
Hy vọng nó sẽ hữu ích cho ai đó