كيفية تخزين FPS تنسيق وأماكن البحث في دائرة نصف قطرها من NOSQL DBMS (مثل Dynamodb)

StackOverflow https://stackoverflow.com//questions/10691547

سؤال

يحتاج فريقي إلى DBMS مثل Dynamodb لتخزين كمية كبيرة من البيانات، والأماكن الرئيسية والإحداثيات. لقد فكرت في استخدام بعض DBMS المستندة إلى نظام المعلومات الجغرافية (مثل Postgis) بفهرس في هذه النقطة، ولكن يبدو أن Dynamodb رائعا لاستخدامنا.

ما هي أفضل طريقة لتخزين الإحداثيات واسترجاع جميع الكائنات بسرعة في دائرة نصف قطرها معينة؟

في Postgis، فمن السهل، شيء مثل هذا:

giveacodicetagpre.

كيف يمكنني أن أفعل شيئا كهذا في NOSQL DBMS؟

هل كانت مفيدة؟

المحلول

كان لدينا نفس المشكلة، نحن نستخدم AWS و dynamodb على وجه الخصوص. نحل هذه المشكلة باستخدام خدمة Cloudsearch، في كل مرة نقوم فيها بتخزين بيانات "البحث الجغرافي" في قاعدة البيانات الخاصة بنا نحن فهرسة البيانات في مثيل Cloudsearch مع LAT، LON كمرشحات (للقيام بذلك، عليك القيام بتحول على LAT و LAT لون لتحويلها إلى uint).

ثم دعونا نقول أنك ترغب في إجراء عملية بحث على جهاز Lat / Lon و Radius معين تحسب Geobox المطابق (اللاتمو، Latmax، Lonmin، Lonmax) واستعلام مثيل Cloudsearch الخاص بك مع المرشحات المحددة لاسترداد مخططك الرئيسي البيانات، يمكنك بعد ذلك استعلام DyneryDB للحصول على المعلومات.

بعض الكود في جافا للقيام فقط أعلاه:

باستخدام مستطيل Windows من com.javadocmd.simplelatlng.window package بواسطة tyler coles، الحوسبة المربع المحيط والقيام التحول ل lat / lon.

giveacodicetagpre.

ثم مثال على استعلام على مثيل Cloudsearch:

http:// [searchurl] / 2011-02-01 / search؟ bq= (و lat: 22300347..22309340 (ولون: 28379282..28391589))

أنا لست متأكدا من أنه أفضل حل ولكن هذا ما وصلنا إليه مع

نصائح أخرى

يمكنك استخدام geohashing للقيام باستعلامات الكائنات القريبة المستندة إلى السلاسل بدلا من الحسابات.

سوف يسمح لك

Geohash بتخزين موقع العقد إلى "دلاء" والتي يمكن إخراجها بعد ذلك باستخدام السلاسل كعايش أو مفتاح التجزئة في Dynamodb.

هنا هو مثال جيد https://github.com/davetroy/geohash-js القيام به في جافا سكريبت يمكن إعادة كتابةها بسهولة بلغات أخرى.

أنا حاليا البحث في هذا الموضوع بنفسي.أنا أستخدم MongoDB (أعرف أنك طلبت Dynamodb، لكنك طلبت أيضا لاستخدام Nosql العام) ويبدو الرمز الخاص بي هذا:

هيكل التسجيل:

giveacodicetagpre.

الاتصال والتأكد من الفهرس:

giveacodicetagpre.

الكتابة:

giveacodicetagpre.

البحث:

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top