Po wprowadzeniu 2.3 >
MongoDB stał się jeszcze bardziej przydatny w obsłudze danych lokalizacyjnych i zapytaniach. MongoDB przechowuje dokumenty jako BSON, więc każdy dokument ma wszystkie pola dokumentu, co potencjalnie prowadzi do większych baz danych niż nasze konwencjonalne RMDBS.GeoJSON i MongoDB: Czy warto przechowywać punkty jako GeoJSON.Point?
Użyłem do przechowywania polilinii i wielokątów jako serii indeksowanych punktów, z dodatkowym polem reprezentującym kolejność każdej linii (robiłem to, aby zapewnić spójność, ponieważ używam JavaScript, więc punkty nie były zawsze przechowywane w ich prawidłowa kolejność). To było coś takiego:
polyline: {
[
point: [0,0],
order: 0
],
[
point: [0,1],
order: 1
]
}
Podczas gdy obecnie używam:
polyline: {
type: 'LineString',
coordinates: [
[0,0],
[1,0]
]
}
widziałem poprawę w wielkości dokumentów, jak niektóre polilinie może mieć maksymalnie 500 punktów.
Zastanawiam się jednak, jakie byłyby korzyści z przechowywania wszystkich moich Point
danych jako GeoJSON
. Jestem zniechęcony przez zwiększenie rozmiaru dokumentu, jak na przykład:
loc: [1,0]
jest lepsze niż
loc: {
type: 'Point',
coordinates: [0,1]
}
iw ten sposób będzie łatwiej pracować.
Moje pytanie brzmi:
Czy lepiej/zalecany do punktów sklepowych jak GeoJSON
obiektów w przeciwieństwie do tablicy 2 pkt?
Co mam uważany jest następujące:
- ograniczenia rozmiaru: mogę mieć potencjalnie miliony dokumentów z lokalizacją, które mogą wpłynąć na wielkość zbiorów i potencjalnie kieszeni.
- Spójność: Lepiej byłoby radzić sobie z każdym zestawem współrzędnych w formacie
lng, lat
, zamiast trzymać się punktówlat, lng
, a dla wszystkich innych moich funkcji lokalizacji. - Wygoda: jeśli zdobędę punkt i użyję z nim
$geoWithin
lub$geoIntersects
, nie będę musiał najpierw przekonwertować go na GeoJSON przed użyciem go jako parametruquery
.
Co Jestem pewny jest:
- czy zostaną usunięte wsparcie dla
loc: [x,y]
w przyszłości na MongoDB - żadnych korzyści indeksujące z
2dsphere
w przeciwieństwie do2d
- Niezależnie od wszelkich planowanych
GeoJSON
dodanie do MongoDB może spowodować konieczność zachowania spójności opisanej powyżej.
Wolałbym przenieść się do GeoJSON
, podczas gdy moje dane są nadal w zarządzaniu, niż zmienić w przyszłości przy dużym obciążeniu.
Proszę uprzejmie poprosić o gruntownie przemyślaną (nawet jeśli lekko) odpowiedź. Nie wybiorę poprawnej odpowiedzi wkrótce, więc mogę ocenić każdą odpowiedź.
Nie jestem również pewien, czy SO jest właściwym miejscem do postawienia pytania, więc jeśli DBA jest bardziej odpowiednim miejscem, poruszę to pytanie. Wybrałem SO, ponieważ istnieje wiele związanych z MongoDB działań tutaj.
Akceptuję twoją odpowiedź. Twój drugi punkt to ten, który mnie przekonuje. Przeczytałem o tym, ale zapomniałem, że mogę teraz używać indeksów złożonych w 2dsphere –