Je suis nouveau dans la conception de systèmes de bases de données. Après avoir lu de nombreux articles, je ne sais vraiment pas quelle est la limite à laquelle nous devrions avoir 1 table sans partitionnement ni partitionnement. Je sais que c'est vraiment difficile de donner une réponse universelle, les choses dépendent de facteurs comme
- Taille des lignes
- Type de données (chaîne, blob, etc.)
- Nombre de demandes actives
- Quel genre de requête
- Index
- Relire/Réécrire
- Retards prévus
Mais quand quelqu'un pose cette question
- Que feriez-vous si 1 milliard de données et des millions de lignes étaient ajoutées chaque jour ? Pour une base de données aussi volumineuse, la latence pour une requête de 4 lectures, 1 écriture et 2 mises à jour doit être inférieure à 5 millisecondes.
- Si vous n'aviez que 10 millions de lignes mais un volume de mise à jour et de lecture élevé, que choisiriez-vous ? Le nombre de nouvelles lignes ajoutées n'a pas d'importance. Une cohérence élevée et une faible latence sont des exigences.
Si le nombre de lignes est inférieur à un million et que la taille des lignes augmente de plusieurs milliers, le choix est simple. Mais les choses se compliquent lorsque la sélection implique des millions ou des milliards de lignes.
Remarque : je n'ai pas mentionné le numéro de retard dans la question. s'il te plaît
Répondez en fonction du nombre de retards avec lesquels vous êtes à l’aise. Nous parlons également de données structurées.
Je ne suis pas sûr, mais je peux ajouter 3 questions spécifiques :
- Supposons que vous choisissiez une base de données SQL pour Amazon ou tout autre système de gestion des commandes de commerce électronique. Le nombre de commandes augmente chaque jour par millions. Il existe déjà 1 milliard d'enregistrements. Supposons maintenant qu’il n’y ait pas d’archive de données. Requêtes de lecture élevée avec plus d'un millier de requêtes par seconde. Et aussi écrit. Le rapport lecture/écriture est de 100:1
- Prenons l’exemple d’un nombre désormais plus petit. Supposons que vous choisissiez la base de données SQL pour ABC ou tout autre système de gestion des commandes de commerce électronique. Le nombre de commandes augmente chaque jour par milliers. Il existe déjà 10 millions de disques. Supposons maintenant qu’il n’y ait pas d’archive de données. Requêtes de lecture élevée avec plus de dix mille requêtes par seconde. Et aussi écrit. Le ratio de lecture et d'écriture est de 10:1
- Troisième exemple : distribution gratuite. Nous avons 10 millions de cadeaux à offrir. 1 goody par utilisateur. Une cohérence élevée et une faible latence sont les objectifs. En supposant qu'il y ait déjà 20 millions d'utilisateurs qui attendent la distribution gratuite, une fois le temps commencé, ils essaieront tous de mettre la main sur les cadeaux gratuits.
Remarque : tout au long de cette question, il est supposé que nous choisirons
Solution SQL. De plus, si le cas d’utilisation fourni n’a pas de sens logique, ignorez-le. L'objectif est d'acquérir des connaissances numériques.
Quelqu'un peut-il m'aider à comprendre ce qu'est la référence ? Tous les chiffres réels du projet sur lequel vous travaillez actuellement montreront que pour une grande base de données avec autant de requêtes, c'est la latence observée. Tout ce qui peut m'aider à justifier le nombre de tables de sélection pour un certain nombre de requêtes pour une latence précise.
Quelques réponses pour MySQL. Étant donné que toutes les bases de données sont soumises à l'espace disque, à la latence du réseau, etc., d'autres moteurs peuvent être similaires.
SELECT
qui prend des heures, voire des jours, à s'exécuter. Vous devez donc comprendre si la requête est pathologique comme celle-ci. (Je pense que c'est un exemple de "latence" élevée.)PARTITIONing
(surtout dans MySQL) a très peu d'utilisations. Plus de détails : PartitionsINDEX
Très important pour la performance.每天插入
Un million de lignes n'est pas un problème. (Bien sûr, certaines conceptions de schéma peuvent causer ce problème.) Règle générale : 100/s peut ne pas être un problème ; 1 000/s peut être possible après cela, cela devient plus difficile. En savoir plus sur Ingestion haute vitesseLorsque vous accédez à de grandes bases de données, il en existe plusieurs types différents ; chacune a des caractéristiques différentes.
SPATIAL
ou une technique ici