2012-03-07 13 views
11

Tôi sẵn sàng bắt đầu một dự án nơi tôi sẽ xây dựng một công cụ đề xuất cho nhà hàng. Tôi đã được waffling giữa neo4j (đồ thị db) và mongodb (tài liệu db). các nút/tài liệu của tôi sẽ là những thứ như nhà hàng và người. tôi biết tôi sẽ muốn một số cạnh, một cái gì đó giống như người-> thích-> nhà hàng, hoặc người-> ate_at-> nhà hàng. truy vấn chính của tôi, tuy nhiên, sẽ là để tìm nhà hàng trong vòng dặm X của vị trí Y.neo4j vs mongodb để tìm kiếm không gian

nếu tôi có 20 nhà hàng trong vòng dặm X của Y, nhưng không nối với nhau bằng bất kỳ cạnh, như thế nào sẽ neo4j có thể xử lý các truy vấn không gian ? tôi biết với mongodb tôi có thể lập chỉ mục trên lat/long và truy vấn tất cả các loại nhà hàng. sao neo4j cung cấp chức năng tương tự trong biểu đồ bị ngắt kết nối?

khi nói đến trả lời các câu hỏi như, 'nhà hàng nào làm bạn bè của tôi ăn thường xuyên nhất?', Là neo4j (đồ thị db) là con đường để đi? hoặc sẽ mongodb (tài liệu db) cung cấp cho tôi chức năng tương tự?

Trả lời

7

Tôi không quen thuộc với Neo4J Spatial nhưng có vẻ như MongoDB có ít nhất là phù hợp vì nó là cơ sở dữ liệu Foursquare sử dụng chính xác với mục đích bạn mô tả. Lập chỉ mục địa lý MongoDB cực kỳ nhanh và tăng lên một cách độc đáo.

+0

Đồng ý, đừng nhìn xa hơn nữa. MongoDB là một kết hợp hoàn hảo cho các yêu cầu của bạn. Bây giờ chỉ cần trộn nó với Node.JS và bạn có một giải pháp cực nhanh và có khả năng mở rộng – psousa

+0

nhờ guys - tôi hiện đang lên kế hoạch triển khai mongodb cho giải pháp này, đó là những gì tôi ban đầu muốn làm vì lập chỉ mục không gian và nhiều API. – drizkol

10

Neo4j Không gian giới thiệu chỉ mục Không gian RTree (hoặc các phương tiện khác) là một phần của biểu đồ. Điều đó có nghĩa, ngay cả các thực thể miền bị ngắt kết nối sẽ được tìm thấy thông qua tìm kiếm không gian, nếu bạn lập chỉ mục cho chúng (nghĩa là các mối quan hệ sẽ kết nối chỉ mục Không gian với các Nhà hàng). Ngoài ra, điều này đủ linh hoạt để bạn có thể kết hợp tìm kiếm BBox nguyên trong RTree với những thứ khác như kiểm tra các danh mục nhà hàng trong cùng một bước, vì bạn có thể nhảy ra và trong các phần khác nhau của biểu đồ.

Bằng cách này, neo4j không gian được hỗ trợ đầy đủ các tính năng tìm kiếm mà bạn mong đợi tạo thành một Topology đầy đủ, như tìm kiếm và tìm kiếm kết hợp trên đa giác với lỗ, vv

Hãy nhận biết rằng Neo4j không gian là ở 0.7, hãy nhẹ nhàng và yêu cầu http://groups.google.com/group/neo4j/about :)

1

Một giải pháp khác có thể là sử dụng CouchBase. Nó cũng sử dụng một mô hình tài liệu - mặc dù bạn cần phải thoải mái hơn nhiều với MapReduce cho các truy vấn. Nó có khả năng không gian tốt hơn bây giờ cảm ơn MongoDB nhưng điều đó có thể thay đổi theo thời gian.

Đề xuất sang một bên, tôi đồng ý rằng hai lựa chọn bạn đã cung cấp cho Mongo sẽ phù hợp với nhu cầu của bạn tốt và có thể phù hợp hơn cho các truy vấn không gian của bạn.

0

Neo4j không gian địa lý không tăng quy mô tốt. Tôi đã tạo một lớp không gian địa lý trong neo4j và thêm các nút vào lớp này. Ngoài 10.000 nút, việc thêm các nút vào lớp trở nên rất chậm ngay cả khi sử dụng neo4j2.0

Mặt khác, vị trí địa lý mongodb hoạt động tương đối nhanh hơn và có khả năng mở rộng hơn.