Các trường hợp sử dụng cho NoQuery [đã đóng]


144

Gần đây, NoQuery đã nhận được rất nhiều sự chú ý trong ngành công nghiệp của chúng tôi. Tôi thực sự quan tâm đến suy nghĩ của mọi người về các trường hợp sử dụng tốt nhất cho việc sử dụng nó trên bộ lưu trữ cơ sở dữ liệu quan hệ. Điều gì sẽ kích hoạt một nhà phát triển nghĩ rằng các bộ dữ liệu cụ thể phù hợp hơn với giải pháp NoQuery. Tôi đặc biệt quan tâm đến MongoDB CouchDB vì chúng dường như được bảo hiểm nhiều nhất liên quan đến phát triển PHP và đó là trọng tâm của tôi.


6
Cassandra và MongoDB là những sản phẩm hoàn toàn khác nhau - những danh mục hoàn toàn khác nhau . Câu hỏi này sẽ dễ trả lời hơn nếu nó hỏi về các trường hợp sử dụng cho một loại cơ sở dữ liệu cụ thể (OODB, DODB, DKVS, v.v.) "NoQuery" chỉ là một thuật ngữ ô cho "bất cứ điều gì không phải là SQL" - nó có thể cũng giống như BerkleyDB hoặc một loạt các tệp phẳng ngồi trên mạng chia sẻ.
Aaronaught

@Aaronaught Tôi đánh giá cao sự khác biệt, tôi đoán tôi có thể phạm tội khi sử dụng thuật ngữ ô với nosql
robjmills

Câu trả lời:


86

Hãy tự hứa với bản thân rằng bạn sẽ không bao giờ cố gắng ánh xạ mô hình dữ liệu quan hệ đến cơ sở dữ liệu NoQuery như MongoDB hoặc CouchDB ... Đây là lỗi phổ biến nhất mà các nhà phát triển mắc phải khi đánh giá công nghệ mới nổi.

Cách tiếp cận đó tương tự như lấy một chiếc xe hơi và cố gắng sử dụng nó để kéo giỏ hàng của bạn xuống đường như một con ngựa.

Tất nhiên, đó là một phản ứng tự nhiên do kinh nghiệm của mọi người, nhưng giá trị thực sự trong việc sử dụng cơ sở dữ liệu tài liệu là có thể đơn giản hóa mô hình dữ liệu của bạn và giảm thiểu sự đau khổ của bạn với tư cách là nhà phát triển. Codebase của bạn sẽ co lại, lỗi của bạn sẽ ít hơn và dễ tìm hơn, hiệu suất sẽ tuyệt vời và quy mô sẽ đơn giản hơn nhiều.

Là một người sáng lập Joomla tôi thiên vị :-) nhưng đến từ không gian CMS, một cái gì đó như MongoDB là một viên đạn bạc vì nội dung ánh xạ rất tự nhiên vào các hệ thống tài liệu.

Một trường hợp tuyệt vời khác cho MongoDB là phân tích thời gian thực, vì MongoDB có hiệu suất và quy mô rất mạnh đặc biệt liên quan đến đồng thời. Có những nghiên cứu trường hợp tại trang web MongoDB.org chứng minh những thuộc tính đó.

Tôi đồng ý với khái niệm rằng mỗi cơ sở dữ liệu có mục tiêu và trường hợp sử dụng riêng; lấy mục đích của từng cơ sở dữ liệu để đánh giá phù hợp.


1
Spacemonkey đã nói rất rõ, tôi ở cùng vị trí với người tìm kiếm, rõ ràng chúng ta phải suy nghĩ theo một cách mới và nên tự hỏi làm thế nào để tôi cấu trúc dữ liệu ứng dụng của mình thành một cấu trúc tài liệu, loại bỏ suy nghĩ của RDBMS khi chúng ta làm phân tích này
vào

49

Một số trường hợp sử dụng tuyệt vời - dù sao đối với MongoDB - được đề cập trên trang MongoDB. Các ví dụ được đưa ra là phân tích thời gian thực, Ghi nhật ký và tìm kiếm Toàn văn. Những bài viết này đều rất đáng để đọc http://www.mongodb.com/use-case

Ngoài ra còn có một bài viết tuyệt vời về cơ sở dữ liệu NoQuery phù hợp nhất với loại dự án nào: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis



8

Những gì tôi thích về NoQuery không liên quan gì đến hiệu năng và mọi thứ liên quan đến khả năng sử dụng. Các cửa hàng tài liệu chỉ dễ dàng hoạt động hơn khi các đơn vị dữ liệu nguyên tử của bạn giống như tài liệu, bởi vì việc sắp xếp theo thứ tự đến và từ các đối tượng là chuyện nhỏ. Nó chỉ vui hơn, và đó là một yếu tố quan trọng cho các dự án cá nhân hoặc phụ.


1
Tôi sẽ không nói chính xác nó tầm thường , nhưng đây là một điểm tốt về Cơ sở dữ liệu hướng đến tài liệu. Điều ngược lại thực sự đúng đối với một số sản phẩm NoQuery khác - DKVSes có xu hướng khó lập bản đồ hơn so với SQL / DB quan hệ.
Aaronaught

8

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 mongoimporttiệ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 đó


3

Tôi thực sự khuyên bạn nên nói chuyện này bởi Martin Fowler:

https://www.youtube.com/watch?v=qI_g07C_Q5I

TÓM TẮT: Martin giới thiệu nhanh về cơ sở dữ liệu NoQuery: chúng đến từ đâu, bản chất của các mô hình dữ liệu mà chúng sử dụng và cách bạn nghĩ khác về tính nhất quán. Từ đó, ông phác thảo những loại tình huống bạn nên xem xét khi sử dụng chúng, tại sao chúng sẽ không làm cho cơ sở dữ liệu quan hệ trở nên lỗi thời và hậu quả quan trọng của sự tồn tại của polyglot.

Nó vẽ ra một bức tranh đẹp về NoQuery là gì, các danh mục khác nhau và những điều mọi người phải hiểu khi đến từ thế giới cơ sở dữ liệu quan hệ. Trân trọng.


Hiểu, sẽ giữ nó trong tâm trí cho tương lai.
dùng3631881

3

Trước tiên, bạn phải hiểu về lý thuyết CAP (Tính nhất quán, Tính khả dụng và Phân vùng, trong đó bạn phải chọn hai trong ba) lý thuyết và trường hợp sử dụng Kinh doanh của chúng tôi. MongoDB đáp ứng tính nhất quán và phân vùng & Couch DB làm hài lòng tính khả dụng và phân vùng.

Các video Edureka trong youtube liên quan đến NoQuery là một số hướng dẫn bằng video tốt nhất.

https://www.youtube.com/watch?v=gJFG04Sy6NY

https://www.youtube.com/watch?v=KSq6tMMXZ8s

https://www.youtube.com/watch?v=3z1KFA2qcSo

Bài thuyết trình tốt có sẵn trong sl slideshoware.net

http://www.sl slideshoware.net/quipo/nosql-database-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=

http://www.sl slideshoware.net/EdurekaIN/no-sql-database-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 (Bài thuyết trình này hỗ trợ trong video)


1

Đối với một số trường hợp sử dụng bạn cần, đặc biệt đối với các truy vấn phân tích, bạn có thể chạy các truy vấn SQL trên MongoDB với trình bao bọc này từ Postgres.


1

Vì hiện tại trên thị trường có nhiều cơ sở dữ liệu NoQuery hơn bao giờ hết, tôi khuyên bạn nên xem Gartner Magic Quadrant nếu bạn đang tìm kiếm một cơ sở dữ liệu cũng sẽ rất tốt cho các ứng dụng doanh nghiệp dựa trên hỗ trợ, mở rộng, quản lý và Giá cả.

http://www.gartner.com/tĩ/reprints.do?id=1-23A415Q&ct=141020&st=sb

Tôi muốn đề xuất Couchbase cho bất kỳ ai chưa dùng thử, nhưng không dựa trên phiên bản được hiển thị trong báo cáo (2.5.1) vì gần 2 phiên bản phía sau nơi CB Server hiện nay, sắp phát hành 4.0 trong 2H15 .

http://www.couchbase.com/come-in-couchbase-server-4-0

Phần khác về Couchbase với tư cách là nhà cung cấp / sản phẩm là nó là loại DB đa dụng. Nó có thể hoạt động như một kho lưu trữ K / V thuần túy, Cơ sở dữ liệu định hướng tài liệu với tỷ lệ đa chiều, Memcached, lưu trữ bộ nhớ cache và hỗ trợ SQL tuân thủ ANSI 92 với các phép nối tự động, sao chép vào cụm DR chỉ bằng một nút nhấn và thậm chí có một thành phần di động tích hợp trong hệ sinh thái.

Nếu không có gì khác, nó đáng để kiểm tra các điểm chuẩn mới nhất:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoQuery-Technical-Comparison-Report.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.