Je pense qu'il est préférable de reformuler:
Pourquoi ne nouveau distribué VoltDB utiliser une commande du journal sur write-ahead log?
Faisons une expérience et imaginez que vous allez écrire votre propre espace de stockage de base de données sur la mise en œuvre. Sans doute vous êtes suffisamment avancé pour résumé un système de fichier et d'utiliser le bloc de rangement avec quelques optimisations supplémentaires.
Quelques terminologie de base:
- État : les informations stockées sur un point donné du temps
- Commande : directive pour le stockage de changer son état
Si votre base de données peut avoir l'aspect suivant:
La prochaine étape consiste à exécuter une commande:
Veuillez noter plusieurs aspects importants:
- Une commande peut affecter de nombreux stockées entités, de sorte que de nombreux blocs vont se salir
- L'état suivant est une fonction de l'état de la commande
Certains états intermédiaires peuvent être ignorées, parce que c'est assez pour avoir une chaîne de commandes à la place.
Enfin, vous avez besoin pour garantir l'intégrité des données.
-
Write-Ahead Logging - concept central est celui de l'État des modifications doivent être enregistrées avant une lourde mise à jour dans le stockage permanent. À la suite de notre idée, nous pouvons nous connecter des changements progressifs pour chaque bloc.
-
Commande Logging - concept central est de vous connecter uniquement de Commande, qui est utilisé pour produire de l'état.
Il y a des avantages et des Inconvénients des deux approches. Write-Ahead log contient toutes les données modifiées, Commande journal nécessitent plus de traitement, mais rapide et léger.
VoltDB: Commande d'enregistrement et de Récupération
La clé de commande de la journalisation est qu'il enregistre les invocations, pas la
les conséquences des transactions. En enregistrant uniquement de l'invocation,
la commande journaux sont maintenus à un minimum, la limitation de l'impact le disque I/O
ont sur la performance.
Notes supplémentaires
SQLite: Write-Ahead Logging
La traditionnelle restauration journal fonctionne par écrit une copie de la
original inchangé base de données de contenu dans un rollback journal
fichier, puis l'écriture des modifications directement dans le fichier de base de données.
Une validation se produit lorsqu'une inscription spéciale indiquant un commit est ajouté
le WAL. Ainsi une livraison peut se produire sans jamais écrit à l'
base de données d'origine, ce qui permet aux lecteurs de continuer à fonctionner à partir de la
d'origine intacte de la base de données alors que des changements sont simultanément en cours
engagé dans le WAL.
PostgreSQL: Write-Ahead Logging (WAL)
À l'aide de WAL résultats dans une réduction significative du nombre d'écritures sur disque,
parce que seul le fichier journal doit être vidées sur le disque afin de garantir
qu'une transaction est validée, plutôt que chaque fichier de données modifié
par la transaction.
Le fichier journal est écrit de manière séquentielle, et donc la
le coût de la synchronisation le journal l'est beaucoup moins que le coût de rinçage de la
pages de données. Cela est particulièrement vrai pour les serveurs de la manipulation de nombreux petits
les transactions touchant les différentes parties de la banque de données. En outre,
lorsque le serveur est le traitement d'un grand nombre de petites transactions simultanées, l'une
fsync du fichier journal peut suffire à commettre de nombreuses transactions.
Conclusion
Commande D'Enregistrement:
- est plus rapide
- a moins d'empreinte
- a lourdes "Replay" de la procédure
- nécessite de fréquentes instantané
Écrire à l'Avance enregistrement est une technique pour fournir l'atomicité. Une meilleure maîtrise de la Journalisation de la performance doit également permettre d'améliorer le traitement des transactions. Les bases de données sur 1 Pied
Confirmation
VoltDB Blog: Intro VoltDB Commande de Journalisation
Un des avantages de la commande logging plus de BÉLIER style de journalisation est qu'un
transaction peut être enregistré avant l'exécution commence au lieu de l'exécuter
la transaction et d'attente pour les données des journaux à vider sur le disque. Un autre
l'avantage est que l'IO débit nécessaire pour une commande du journal est
délimité par le réseau utilisé pour relayer les commandes et, dans le cas de
Gig-E, ce débit peut être satisfait par les bas prix des produits de base de disques.
Il est important de se rappeler VoltDB est distribué de par sa nature. Ainsi les transactions sont un peu difficile à gérer et impact sur les performances est perceptible.
VoltDB Blog: VoltDB la Nouvelle Fonctionnalité de Journalisation de Commande
Le journal de commandes dans VoltDB se compose de procédure stockée invocations et
leurs paramètres. Un journal est créé au niveau de chaque nœud et chaque journal est
répliqué car tous les travaux sont répliquées sur plusieurs nœuds. Cette
résultats dans une commande répliquée journal de dupe en replay
temps. Parce que VoltDB les transactions sont fortement ordonnée, la commande
le journal contient des informations de commande ainsi. Ainsi, la relecture peut se produire
dans l'ordre exact de l'original de transactions a couru dans, avec le plein
l'isolation de la transaction VoltDB offre. Depuis les invocations eux-mêmes
sont souvent plus petits que les données modifiées, et peut être connecté avant
ils se sont engagés, cette approche a une très faible incidence sur
les performances. Cela signifie VoltDB les utilisateurs peuvent obtenir le même genre de
stratosphérique, les chiffres de la performance, avec une durabilité supplémentaires
des assurances.