nous fonctionnons actuellement à la limite des ressources avec notre solution basée sur le serveur mssql.
Nous avons maintenant de nombreuses options traditionnelles concernant la prochaine étape pour faire face à la charge:
- acheter des processeurs et des E / S plus rapides
- diviser certains clients sur un serveur séparé
- déplacer la base de données vers le cluster
Tous sont coûteux en termes de licence et de matériel ou de temps. Donc, je veux ajouter une autre option en déplaçant l'ensemble du système vers une solution évolutive que promet la cassandra du moteur nosql.
Pourtant, je ne suis pas sûr et je n'ai pas d'expérience avec les bases de données noSQL, j'ai donc besoin de comprendre la structure des données "non structurées".
Dans notre application, nous stockons essentiellement les données saisies par les utilisateurs de différentes manières sous forme de listes de "valeurs-clés". Il y a une table parent, qui contient l'élément head (comme une commande) et il y a une table enfant avec les paires clé-valeur comprenant le contenu de la commande (comme Order_Lines).
Du point de vue commercial, Order et OrderLines sont une unité. Mais en raison du SGBDR, ils sont stockés dans des tables et doivent être joints en tout temps.
Pendant les opérations, nous choisissons parfois de ne charger que la partie supérieure, mais la plupart du temps, nous chargeons la ligne d'en-tête + quelques KVP pour afficher des informations utiles.
Par exemple, dans une liste de présentation, nous affichons l'identifiant de tête + quelques valeurs dans des colonnes pour chaque ligne.
MISE À JOUR: Nous stockons des formulaires de toute nature. Donc, fondamentalement, nous stockons des "documents". Néanmoins, nous devons préparer et rechercher dans ces formulaires par n'importe quelle valeur, tri, etc. Le contrôle d'accès aux données ajoute une autre couche de compexité sur la base de données.
Comme vous pouvez le deviner, la quantité et la disponibilité de certains KVP varient d'un objet à l'autre. Il n'y a pas de possibilité valide de créer des tables uniques pour chaque type d'objet, car il faudrait créer des milliers de tables pour les différentes combinaisons de données.
Serait-il préférable de stocker ce type de "dictionnaire" comme des ensembles de données dans une base de données noSQL? Et en tirerons-nous des avantages en termes de performances? Cassandra modéliserait-elle ces têtes + KVP comme un seul ensemble de données? En regardant la page Web de cassandra et certains tutoriels, j'ai l'impression qu'il n'y a pas tellement de différence entre notre SGBDR et cassandra en termes d'organisation des données - nous laissant avec la même énorme quantité de jointures si vous vouliez sélectionner 5 KVP pour une liste pour chaque ligne.
L'illumination est la bienvenue, aussi des pointeurs vers des articles expliquant les problèmes sont ok.