MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Avantages et inconvénients de l'utilisation de MongoDB au lieu de MS SQL Server

Je suis moi-même débutant sur les bases de données NoSQL. Je réponds donc à cela au détriment des votes négatifs potentiels, mais ce sera une excellente expérience d'apprentissage pour moi.

  • pour savoir si MongoDB est bon pour conserver de telles données, qui seront éventuellement interrogées par rapport à des plages de temps (par exemple, récupérer toutes les images d'une caméra particulière entre une heure spécifiée) ? Avez-vous des suggestions sur la conception de schémas basés sur des documents pour mon cas ?

MongoDB étant une base de données orientée document, est bon pour interroger au sein un agrégat (vous l'appelez document). Puisque vous stockez déjà les données de chaque caméra dans sa propre table, dans MongoDB, vous aurez une collection distincte créé pour chaque caméra. Voici comment procéder vous effectuez des requêtes de plage de dates.

  • Quelles devraient être les spécifications du serveur (processeur, RAM, disque) ? une suggestion ?

Toutes les bases de données NoSQL sont conçues pour évoluer sur le matériel de base. Mais d'après la façon dont vous avez posé la question, vous envisagez peut-être d'améliorer les performances en évoluant . Vous pouvez commencer avec une machine raisonnable et à mesure que la charge augmente, vous pouvez continuer à ajouter plus de serveurs (scaling-out). Vous n'avez pas besoin de planifier et d'acheter un serveur haut de gamme.

  • Dois-je envisager le partage/la réplication pour ce scénario (tout en tenant compte des performances d'écriture pour synchroniser les jeux de répliques) ?

MongoDB verrouille l'intégralité de la base de données pour une seule écriture (mais produit pour d'autres opérations) et est destiné aux systèmes qui ont plus de lectures que d'écritures. Cela dépend donc de la façon dont votre système est. Il existe plusieurs façons de partitionner et doit être spécifique au domaine. Une réponse générique n'est pas possible. Cependant quelques exemples peuvent être donnés comme le sharding par géographie, par branches etc.

Lisez également Une introduction en anglais simple au théorème CAP

Mise à jour avec la réponse au commentaire sur le sharding

Selon leur documentation , vous devriez envisager de déployer un cluster partitionné si :

Donc, sur la base du dernier point, oui. La fonctionnalité de partitionnement automatique est conçue pour mettre à l'échelle les écritures. Dans ce cas, vous avez un verrou en écriture par shard , pas par base de données . Mais la mienne est une réponse théorique. Je vous suggère de consulter le groupe 10gen.com.