Utilisations de la base de données NoSQL en science des données

16

Comment les bases de données NoSQL comme MongoDB peuvent-elles être utilisées pour l'analyse des données? Quelles sont les fonctionnalités qui peuvent rendre l'analyse des données plus rapide et plus puissante?

jithinjustin
la source
2
L'utilisation principale est le stockage et la récupération de données. En fait, c'est à peu près la seule utilisation d'une base de données NOSQL ou d'une base de données. Vous voulez améliorer votre question?
Spacedman
Oui, la base de données est principalement utilisée pour stocker et récupérer des données. Comment peuvent-ils être utilisés pour l'analyse des données? Quels sont les outils intégrés aux bases de données NOSQL comme mongodb qui rendent l'analyse des données facile et puissante?
jithinjustin
1
Améliorez votre question en la modifiant, sans l'ajouter aux commentaires.
Spacedman

Réponses:

23

Pour être parfaitement honnête, la plupart des bases de données NoSQL ne sont pas très bien adaptées aux applications de Big Data. Pour la grande majorité de toutes les applications de Big Data, les performances de MongoDB par rapport à une base de données relationnelle comme MySQL sont considérablement insuffisantes pour justifier de rester à l'écart de quelque chose comme MongoDB.

Cela dit, il existe quelques propriétés vraiment utiles des bases de données NoSQL qui fonctionnent certainement en votre faveur lorsque vous travaillez avec de grands ensembles de données, bien que la probabilité de ces avantages l'emporte sur les performances généralement médiocres de NoSQL par rapport à SQL pour la lecture. les opérations intensives (les plus similaires aux cas d'utilisation de Big Data typiques) sont faibles.

  • Aucun schéma - Si vous travaillez avec un grand nombre de données non structurées, il peut être difficile de réellement décider et d'appliquer un schéma de manière rigide. Les bases de données NoSQL en général le soutiennent très bien et vous permettront d'insérer des documents sans schéma à la volée, ce qui n'est certainement pas quelque chose qu'une base de données SQL prendra en charge.
  • JSON - S'il vous arrive de travailler avec des documents de style JSON plutôt qu'avec desfichiers CSV , alors vous verrez beaucoup d'avantages à utiliser quelque chose comme MongoDB pour une couche de base de données. En règle générale, les économies de flux de travail ne sont pas supérieures à l'augmentation des temps de requête.
  • Facilité d'utilisation - Je ne dis pas que les bases de données SQL sont toujours difficiles à utiliser ou que Cassandra est la chose la plus facile à configurer au monde, mais en général, les bases de données NoSQL sont plus faciles à configurer et à utiliser que les bases de données SQL. MongoDB en est un exemple particulièrement fort, connu pour être l'une des couches de base de données les plus faciles à utiliser (en dehors de SQLite ). SQL traite également de beaucoup de normalisation et il existe un important héritage de bonnes pratiques SQL qui gêne généralement le processus de développement.

Personnellement, je pourrais vous suggérer de consulter également des bases de données graphiques telles que Neo4j qui montrent de très bonnes performances pour certains types de requêtes si vous cherchez à choisir un backend pour vos applications de science des données.

indico
la source
Tu as raison. Les bases de données NOSQL sont principalement utilisées pour stocker des données non structurées ou semi-structurées comme json. Pouvez-vous expliquer certains types d'analyses de données que nous pouvons faire avec eux. Quels sont les outils intégrés à mongodb qui peuvent être utilisés pour l'analyse des données?
jithinjustin
1
@jithinjustin, il n'y a pas d'outils d'analyse de données intégrés dans mongo, ou vraiment aucune base de données. En outre, il jsons'agit de données totalement structurées. Vous pouvez techniquement effectuer tout type d'analyse de données dessus, en utilisant une base de données NOSQL n'est en fait pas liée. Il existe des outils construits sur mongo, comme analytica.
indico
1
Je ne sais pas tout ça. MongoDB peut mieux fonctionner que MySQL. Vous auriez un meilleur argument si vous disiez PostgreSQL (qui, soit dit en passant, peut accepter JSON). Quoi qu'il en soit, je ne considérerais pas certaines "performances" arbitraires (nous ne savons pas quel est le cas d'utilisation) comme une raison de ne pas utiliser NoSQL. Ne négligez pas non plus l'utilisation de plusieurs bases de données. N'oubliez pas que MongoDB possède des fonctionnalités d'agrégation incroyables que SQL ne possède pas.
Tom
1
@Tom sur les performances, vous constaterez que la seule tâche sur laquelle mongo surpasse réellement mysql est l'insertion ( moredevs.ro/mysql-vs-mongodb-performance-benchmark ), qui est une partie relativement petite de l'analyse des données. Les fonctionnalités d'agrégation de SQL sont bien plus matures que celles de Mongo. En ce qui concerne MYSQL par rapport à Postgres, les chiffres sont très biaisés dans le temps et les deux ont tendance à offrir des performances similaires. MYSQL est plus courant, c'est pourquoi je l'ai mentionné à la place, mais les deux sont assez similaires.
indico
J'ai toujours vu de meilleures performances sur MongoDB lorsque les choses entrent en mémoire. Je prends des benchmarks avec un gain de sel car si vous cherchez un peu sur Google, vous trouverez un tas de benchmarks montrant MongoDB comme plus rapide. Cela dépend vraiment de vos besoins. Cela dit, pour aider à répondre à la question d'origine - je pense qu'il existe de nombreuses utilisations de NoSQL dans la science et l'analyse des mégadonnées.
Tom
4

L'un des avantages de l'approche NoSQL sans schéma est que vous ne vous engagez pas prématurément et que vous pouvez appliquer le bon schéma au moment de la requête à l'aide d'un outil approprié comme Apache Drill . Voir cette présentation pour plus de détails. MySQL ne serait pas mon premier choix dans un contexte de Big Data.

Emre
la source
Voici une question connexe concernant NoSQL, JSON et Drill: datascience.stackexchange.com/questions/9568/…
sheldonkreger
4

Considérez, essayez et peut-être même utilisez plusieurs bases de données. Ce n'est pas seulement un problème de «performance» en jeu ici. Cela dépendra vraiment de vos besoins. De combien de données parlez-vous? quel genre de données? à quelle vitesse en avez-vous besoin? Êtes-vous plutôt en lecture ou en écriture?

Voici une chose que vous ne pouvez pas faire dans une base de données SQL: calculer le sentiment. http://www.slideshare.net/shift8/mongodb-machine-learning

Bien sûr, la vitesse dans ce cas peut ne pas être assez rapide pour vos besoins, mais c'est quelque chose qui est possible. Avec une certaine mise en cache de valeurs agrégées spécifiques, il était même tout à fait acceptable. Pourquoi voudriez-vous faire cela? Commodité.

La commodité est vraiment quelque chose qui vous convaincra. C'est exactement pourquoi (à mon avis) des bases de données NoSQL ont été créées. Les performances aussi bien sûr, mais j'essaie de réduire les benchmarks et de me concentrer davantage sur d'autres préoccupations.

Les bases de données MongoDB (et certaines autres NoSQL) ont des fonctionnalités très puissantes telles que la carte / réduction intégrée. Cela pourrait entraîner des économies de temps et d'argent par rapport à l'utilisation de quelque chose comme Hadoop. Ou il pourrait fournir un prototype ou un MVP pour lancer une entreprise plus importante.

Qu'en est-il des bases de données graphiques? Ils sont aussi "NoSQL". Regardez des bases de données comme OrientDB. Si vous voulez discuter des performances ... je ne pense pas que vous allez me montrer une base de données SQL plus rapide =) ... et les bases de données graphiques ont une application vraiment incroyable basée sur ce que vous devez faire.

Les règles de la technologie (et Internet) ne sont pas trop à l'aise avec une chose. Vous allez être limité et vous préparer à l'échec.

À M
la source
1
Je ne vois rien dans ce lien ou ici qui prouve que vous ne pouvez pas faire d'analyse de sentiment dans une base de données SQL. les exemples mongoDB bénéficient de Javascript dans la base de données, vous pouvez donc utiliser n'importe quel langage intégré dans une base de données SQL. Par exemple Postgres + R.
Spacedman
J'adorerais voir où vous pourriez exécuter du code et mapper / réduire dans ces bases de données. Sérieusement (surtout Postgres). ... et même si vous le pouviez, cela ne rend pas la réponse encore moins valable au fait. On pourrait simplement vouloir utiliser NoSQL. Ça marche.
Tom
1
Postgres + C, Python, Perl, R, alimentez votre base de données Postgres dans les derniers algorithmes d'apprentissage automatique. Facile: postgresql.org/docs/9.0/static/xplang.html
Spacedman
Agréable. Je vais devoir essayer ça un jour. Et MySQL?
Tom