Données géographiques avec mongodb ou cassandra
je considère une validation de principe pour le traitement de grands volumes de données comme > 10 G qui nécessite au moins 200+ écrit par seconde et environ 50+ lit par seconde de données géographiques connexes. C'est un système de culture. Actuellement, je pense déplacer ces données de grand volume dans un NoSQL table Grande sorte de db pour des raisons de performance.
j'ai réfléchi et j'ai regardé de plus près MongoDB et cassandra. En ce qui concerne ma lecture,
Mongodb: - semble avoir un verrou en écriture problème - un des messages dans stackoverflow suggéré cette db s'il n'y a pas besoin de plusieurs serveurs - index gardé la mémoire. Ainsi, plus la croissance de l'indice est importante, plus la performance se détériore. - avantage est Mongodb a un soutien direct pour les données spatiales et l'indexation avec des caractéristiques comme la recherche des emplacements à proximité, etc., - Je vois ce post Cassandra ou MongoDB pour notre application basée sur la localisation suggérant mongodb comme le meilleur choix
Cassandra:
- Semble être le meilleur d'entre connexes dbs
- Semble avoir une bonne écriture ainsi que la performance de lecture
- Ne prend pas nativement en charge l'indexation spatiale, mais celle-ci peut être étendue par géohashage
mon cœur va en fait pour mongodb en raison de sa bonne documentation et le soutien direct pour les données spatiales. Est-ce que quelqu'un a eu une mauvaise expérience en utilisant mongodb pour de tels grands systèmes? Je en fait voir beaucoup de messages sur mongodb iostat pour la performance.
si mongodb n'est pas adapté, quelqu'un peut-il donner quelques conseils sur la géohashing en utilisant cassandra? J'ai vu le lien http://code.google.com/p/geospatialweb/ pour créer les tables de hachage. Mais il y a des questions sur la façon d'interroger etc.?
3 réponses
je me rends compte qu'il s'agit d'une question plus ancienne et je sais qu'elle ne répond pas directement à votre question, mais en fonction de vos requêtes, Cassandra peut ne pas être la meilleure option, et obtenir vos requêtes à travailler avec l'indexation en MongoDB peut être problématique aussi bien (dans ma propre expérience). Mongo a un léger avantage sur Cassandra pour les données géo et les requêtes imho.
je suggère également d'envisager de regarder dans ElasticSearch, qui dépend de votre forme de données et les types de les requêtes que vous ferez est probablement la meilleure solution. Lorsque vous avez posté votre question, il était probablement moins d'une option qu'aujourd'hui.
nous utilisons aussi Cassandra pour le moment et cherchons une solution d'indice spatial. Nous allons avec Lucene afin de fournir le texte complet et la recherche attribuée et avec elle vient le soutien pour l'indexation spartiale. Peut-être que tu veux vérifier ça aussi.
notre implémentation actuelle ressemble à partager l'information basée sur un arbre simple (basé sur une grille) et chaque fragment est un indice de Lucene et une fois qu'il croît sur une certaine taille, l'indice est divisé par x ou Y. Et puisque tel un fragment a une représentation binaire (position dans la grille se compose de deux bits, prochain niveau 2 bits et ainsi de suite), une recherche est émise par la position et sera répondu par n'importe quel préfixe de chapeau de fragment la position / résolution de la grille. Simple système fonctionne bien mais n'est pas utilisé de façon productive à l'heure actuelle.
Essayez Cassandra + Solr. Cela peut être utile: http://digbigdata.com/geospatial-search-cassandra-datastax-enterprise/
en ce qui Concerne, Goutham Kumar