2014-04-04 15 views
9

Vì Cassandra dựa trên giấy Dynamo (bảng băm tự cân bằng, phân phối) + BigTable và có các chỉ mục không gian phù hợp với mô hình đó (quadkey hoặc geohash). Có lý do nào mà sự hỗ trợ không gian địa lý chưa được thực hiện?Có lý do nào mà Cassandra không có hỗ trợ không gian địa lý?

Bạn có thể thêm kiểu dữ liệu GeoPoint dưới dạng bộ dữ liệu với một geohash nội bộ và chỉ định một CF có chứa dữ liệu địa lý. Từ đó bạn có thể chọn hành vi khi có dữ liệu địa lý là chỉ mục phụ hoặc SCF không chuẩn hóa. Điều đó có thể đặt nền móng cho việc phát triển không gian địa lý và bạn có thể bắt đầu bằng cách thực hiện một số loại quả treo thấp như .nearby(), có thể trả về các cột có chung cùng một geohash. (Tôi biết rằng sẽ không cung cấp cho bạn "gần nhất", bạn phải đi bộ xung quanh geohashes hoặc sử dụng một hình dạng và một không gian điền đường cong cho rằng có thể được thực hiện sau đó, nhưng là một hoạt động chung cho việc tìm kiếm một số các cột lân cận)

Tôi biết SimpleGeo/Urban Airship đã xây dựng hỗ trợ địa lý vào Cassandra, nhưng có vẻ như nó chưa từng được mở ra. Ngoài ra, hãy cho tôi biết nếu có một nơi tốt hơn để hỏi điều này (quora, danh sách gửi thư, v.v ...)

+0

Đây là triển khai python của một quadkey nếu điều đó giúp https://github.com/buckheroux/QuadKey – agentargo

+0

Tôi tò mò tại sao một DB sẽ hỗ trợ thứ gì đó chỉ hữu ích trong một miền vấn đề cụ thể. Một số người trong số họ làm, vì vậy phải có một lý do chính đáng. Nhưng không phải là điều này tương tự để hỗ trợ các loại dữ liệu cụ thể cho, ví dụ, bộ gen? –

Trả lời

5

Tôi nghĩ rằng có hai phần để trả lời.

Lý do tại sao nó không có ở đó, là bởi vì không ai cam kết mã vào Cassandra đã nghĩ về tính năng này, hoặc nghĩ rằng khả năng này có mức độ ưu tiên đủ cao để dành nhiều thời gian cho nó. Hầu hết sự phát triển trong Cassandra được Datastax thực hiện, và họ là một thực thể thương mại, rất riêng tư với các yêu cầu và đề xuất của người dùng và cũng khá thực dụng về những gì có thể mang lại cho họ ROI nhiều nhất về các tính năng mới.

Nếu có đủ nhà phát triển bên thứ ba (hoặc một nhóm) đủ thời gian, điều này có thể được thực hiện và các ủy viên C * có thể sẽ không có vấn đề gì về việc thêm một tính năng chính như thế này.

Khía cạnh thứ hai là Cassandra hỗ trợ các đốm màu (mảng byte), có nghĩa là những gì bạn mô tả có thể được triển khai trong ứng dụng/trình điều khiển ứng dụng theo cách tương đối đơn giản. Ổ đĩa trong trường hợp đó sẽ chịu trách nhiệm dịch các cuộc gọi địa lý thành các hoạt động byte nguyên liệu thích hợp. Tôi cũng nghi ngờ điều này sẽ ít hoạt động hơn so với hỗ trợ một nguyên thủy dữ liệu hoàn toàn mới với tập hợp các toán tử liên quan trong công cụ lưu trữ lõi.

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