Qu'est-ce qu'une"transaction distribuée"?
L'article de Wikipedia pour transaction distribuée n'est pas très utile.
pouvez-vous donner une description générale de ce qu'est une transaction distribuée?
aussi, pouvez-vous donner un exemple de pourquoi une application ou une base de données devrait effectuer une transaction qui met à jour des données sur deux ou plusieurs ordinateurs en réseau? J'ai compris l'exemple classique de la banque; je me soucie plus des transactions distribuées dans les bases de données à l'échelle du Web comme Dynamo, Bigtable, HBase, ou Cassandra.
5 réponses
habituellement, les transactions se produisent sur un serveur de base de données:
BEGIN TRANSACTION
SELECT something FROM myTable
UPDATE something IN myTable
COMMIT
A distributed transaction concerne plusieurs serveurs:
BEGIN TRANSACTION
UPDATE amount = amount - 100 IN bankAccounts WHERE accountNr = 1
UPDATE amount = amount + 100 IN someRemoteDatabaseAtSomeOtherBank.bankAccounts WHERE accountNr = 2
COMMIT
la difficulté vient du fait que les serveurs doivent communiquer pour s'assurer que les propriétés transactionnelles telles que atomicité sont satisfaites sur les deux serveurs: si la transaction réussit, les valeurs doivent être mises à jour sur les deux serveurs. Si la transaction échoue, la transaction doit être effectuée sur les deux serveurs. Il ne doit jamais arriver que les valeurs soient mises à jour sur un serveur mais pas sur l'autre.
les transactions Distribuées étendent sur plusieurs systèmes physiques, alors que la norme transactions ne sont pas. La synchronisation entre les systèmes devient un besoin qui, traditionnellement, n'existerait pas dans une transaction standard.
de votre référence Wikipédia...
...une transaction distribuée peut être considérée comme une transaction de base de données que doit être synchronisé (ou fournir de L'acide) propriétés) parmi les multiples bases de données participantes qui sont distribution selon les différents emplacement...
une transaction distribuée est une transaction qui fonctionne sur plusieurs ordinateurs. Disons que vous démarrez une transaction dans une méthode quelconque dans un programme sur l'ordinateur A. Vous faites alors quelques changements aux données dans la méthode sur l'ordinateur A, et afterwords la méthode appelle un service web sur l'ordinateur B. La méthode de service web sur l'ordinateur B échoue et roule la transaction en arrière. Étant donné que la transaction est distribuée, cela signifie que tout changement apporté à l'ordinateur A doit également être retranché. La combinaison de le coordonnateur des transactions distribuées sur windows et le framework. net facilitent cette fonctionnalité.
une transaction distribuée est une transaction dans une base de données distribuée (c.-à-d. une transaction où les données sont stockées sur un certain nombre de systèmes physiquement séparés). C'est remarquable parce qu'il y a beaucoup de complexité en jeu (surtout dans les communications) pour s'assurer que toutes les machines restent d'accord, donc soit toute la transaction réussit, soit il semble que rien ne se soit passé du tout.
j'ai essayé de dépeindre les détails des transactions distribuées dans ce post comment régleriez-vous la transaction distribuée ( XA ) pour la performance?
les données valables pour les transactions distribuées sont des données qui exigent une très grande uniformité. Habituellement, c'est de l'argent ou autre chose que nous ne pouvons jamais avoir de données périmées. Généralement, Je définit deux catégories de données en direct et des données qu'il n'y a pas besoin imediate pour l'exactitude/cohérence.
Maintenant la deuxième partie de la question à propos de la Dynamo, Bigtable, HBase, ou Cassandra.
vous ne pouvez pas tracer un parallèle entre les bases de données NOSQL et les transactions distribuées. L'existence même de cette catégorie de bases de données se justifie comme moyen d'éviter les transactions distribuées. La transaction distribuée est centrée sur la cohérence. C'est tout à fait le cas avec les stockages NOSQL qui sont centrés sur la disponibilité et Partitionner.
le modèle transactionnel habituel utilisé dans ces bases de données est la cohérence éventuelle.