NoSQL (MongoDB) vs Lucene (ou Solr) en tant que votre base de données
Avec le NoSQL mouvement de croissance sur la base du document de bases de données, j'ai regardé MongoDB ces derniers temps. J'ai remarqué une similitude frappante avec la façon de traiter les objets comme "Documents", tout comme Lucene n' (et les utilisateurs de Solr).
Donc, la question: Pourquoi voudriez-vous d'utiliser le NoSQL (MongoDB, Cassandra, CouchDB, etc) sur Lucene (ou Solr) que votre "base de données"?
Ce que je suis (et je suis sûr que d'autres sont à la recherche d'une réponse est certaine, plongée comparaisons d'entre eux. Passons sur la base de données relationnelle discussions tous ensemble, ils servent un but différent.
Lucene donne de sérieux atouts, comme les puissants de la recherche et des systèmes de poids. Pour ne pas mentionner les facettes dans Solr (qui Solr est intégré dans Lucene bientôt, yay!). Vous pouvez utiliser Lucene documents pour stocker les Identifiants et accéder aux documents en tant que tels comme MongoDB. Mélanger avec Solr, et vous pouvez maintenant obtenir un Service web-basé, d'équilibrage de charge de la solution.
Vous pouvez même lancer dans une comparaison de l'out-of-process fournisseurs de cache tels que la Vitesse ou MemCached lorsque l'on parle de semblable stockage des données et de l'évolutivité de MongoDB.
Les restrictions autour de MongoDB me rappelle de l'utilisation de MemCached, mais je peux utiliser Microsoft sur la Vitesse et avoir plus de regroupement et de collecte des listes de pouvoir sur MongoDB (je pense). Ne pouvez pas obtenir la plus rapide ou plus évolutif que la mise en cache des données dans la mémoire. Même Lucene est un fournisseur de mémoire.
MongoDB (et les autres) ne présentent certains avantages, tels que la facilité d'utilisation de leur API. Nouveau un document, créer un id, et de les stocker. Fait. Agréable et facile.
- Voir stackoverflow.com/questions/2546494/...
- Merci, mais cela ne veut pas répondre à ma question: qui est, pourquoi voudrais-je utiliser MongoDB au lieu de Lucene pour ma base de données? Ils ont tous les deux gérer les documents, mais Lucene a quelques très puissantes options de recherche. +1 mais pour réellement trouver une question connexe. J'ai plusieurs fois la même recherche sur Stackoverflow, et n'est pas venu avec un près de la comparaison.
- Comment êtes-vous d'utiliser Lucene qu'il fournit des fonctionnalités similaires à MongoDB? Êtes-vous l'attacher à un relationnel pour le stockage?
- C'est une question hypothétique. Pourquoi ne pas utiliser Lucene que votre stockage de document? Vous obtenez beaucoup plus à la recherche de puissance et d'évolutivité (lorsqu'il est mélangé avec Solr, prise de Lucene encore plus facile à utiliser).
Vous devez vous connecter pour publier un commentaire.
C'est une grande question, quelque chose que j'ai médité sur tout à fait un peu. Je vais résumer mon leçons apprises:
Vous pouvez facilement utiliser Lucene/Solr en lieu et place de MongoDB pour à peu près toutes les situations, mais pas vice-versa. Subvention Ingersoll du post résume ici.
MongoDB etc. semblent servir un but où il n'y a aucune exigence en matière de recherche et/ou de la recherche à facettes. Il semble être un moyen plus simple et sans doute plus facile de transition pour les programmeurs de désintoxication à partir du SGBDR monde. À moins que l'on est habitué Lucene & Solr ont un plus raide de la courbe d'apprentissage.
Il n'y a pas beaucoup d'exemples de l'utilisation de Lucene/Solr comme une banque de données, mais le Gardien a fait quelques progrès et de résumer cela dans une excellente jeu de diapositives, mais ils sont également non-incarcération sur totalement de sauter sur Solr train en marche et de "l'enquête" en combinant les Solr avec CouchDB.
Enfin, je vais vous proposons notre expérience, malheureusement, ne peut révéler beaucoup sur le cas. Nous travaillons à l'échelle de plusieurs to de données, en temps quasi réel de l'application. Après avoir étudié diverses combinaisons, a décidé de rester avec Solr. Aucun regret à ce jour (de 6 mois & comptage) et ne vois aucune raison de passer à une autre.
Résumé: si vous n'avez pas de recherche exigence, Mongo offre un moyen simple & approche puissante. Toutefois, si la recherche est la clé de votre offre, vous êtes probablement mieux de coller à une tech (Solr/Lucene) et donc d'optimiser le diable hors de lui - moins de pièces en mouvement.
Mes 2 cents, espère que cela a aidé.
Vous ne pouvez pas partiellement mise à jour d'un document dans solr. Vous avez de re-publier tous les champs afin de mettre à jour un document.
Et des questions de rendement. Si vous n'avez pas commis, votre changement de solr ne prend pas effet, si vous vous engagez à chaque fois, le rendement en souffre.
Il n'y a pas de transaction en solr.
Comme solr a ces inconvénients, quelques fois nosql est un meilleur choix.
Nous utiliser MongoDB et Solr ensemble et ils fonctionnent bien. Vous pouvez trouver mon billet de blog ici où j'ai décrit la façon dont nous utilisons ces technologies ensemble. En voici un extrait:
Veuillez également noter que certaines personnes ont intégré Solr/Lucene dans Mongo en ayant toutes les index soient stockées dans Solr et aussi le suivi oplog opérations en cascade et des mises à jour pertinentes dans Solr.
Avec cette approche hybride, vous pouvez vraiment avoir le meilleur des deux mondes avec des fonctionnalités telles que la recherche en texte intégral et rapide lit avec un fiable de la banque de données peut également avoir flamboyant de la vitesse d'écriture.
C'est un peu technique pour l'installation, mais il y a beaucoup de oplog commerçants qui peuvent s'intégrer dans solr. Découvrez ce que rangespan fait dans cet article.
http://denormalised.com/home/mongodb-pub-sub-using-the-replication-oplog.html
De mon expérience avec les deux, Mongo est idéal pour simple, simple d'utilisation. Le principal Mongo inconvénient que nous avons subi est la mauvaise performance sur les imprévus de requêtes (vous ne pouvez pas créé mongo index de tous les filtre/tri des combinaisons, vous simple ne peut pas faire).
Et là où Lucene/Solr prévaut est un grand moment, surtout avec la FilterQuery la mise en cache, la Performance est remarquable.
Car personne d'autre ne mentionné, permettez-moi d'ajouter que MongoDB est un schéma de moins en moins, alors que Solr applique un schéma. Donc, si les champs de vos documents sont susceptibles de changer, c'est une des raisons de choisir MongoDB sur Solr.
schema.xml
, MAIS il ne aussi "dynamique des champs", c'est à dire les champs dont le type est déterminé par l'intermédiaire de cartes sauvages, de sorte que vous pouvez avoir tous les champs correspondant, disons,*_i
indexés comme les champs de type entier. lors de l'ajout de documents, vous pouvez alors avoir des documents conaining champs commecount_i
,foo_i
,bar_i
qui sont comprises comme des champs de type entier sans apparaître dansschema.xml
littéralement. joli schéma, je dirais. voir youtube.com/watch?v=WYVM6Wz-XTw pour plus d'.@mauricio-scheffer mentionné Solr 4 - pour ceux qui sont intéressés en ce que, LucidWorks décrit Solr 4 "le NoSQL Serveur de Recherche" il y a une vidéo à http://www.lucidworks.com/webinar-solr-4-the-nosql-search-server/ où ils vont dans le détail sur le NoSQL(ish) caractéristiques. (L'-ish est pour leur version de schemaless étant en réalité une dynamique de schéma.)
Si vous voulez juste pour stocker des données en utilisant le format clé-valeur, Lucene n'est pas recommandé en raison de son index inversé va perdre trop de l'espace disque. Et avec la sauvegarde des données dans le disque, son rendement est beaucoup plus lent que les bases de données NoSQL comme le redis parce redis enregistrer les données dans la mémoire RAM. La plupart d'avantage de Lucene est qu'il prend en charge beaucoup de requêtes, de sorte que les requêtes floues peuvent être pris en charge.
La troisième partie des solutions, comme un mongo op-journal de la queue sont attrayants. Des pensées ou des questions demeurent quant à savoir si les solutions pourraient être étroitement intégré, en supposant un développement/architecture de la perspective. Je ne m'attends pas à voir une solution étroitement intégrée solution pour ces fonctions pour quelques raisons (un peu spéculatif et sous réserve de clarification et ne sont pas à jour avec les efforts de développement):
MongoDB Atlas aura un lucene-moteur de recherche basé sur bientôt. La grosse annonce a été faite lors de cette semaine MongoDB Monde 2019 conférence. C'est un excellent moyen d'encourager davantage l'utilisation de leur chiffre d'affaires élevé MongoDB Atlas produit.
J'espérais voir il a roulé dans la MongoDB entreprises version 4.2, mais il n'y a pas eu de nouvelles de lui apporter à leur sur-prem ligne de produits.
Plus d'infos ici: https://www.mongodb.com/atlas/full-text-search