Як зробити кілька записів у транзакції

Посібник з виконання транзакційних записів

Передумови

Транзакції

txn для обробки всіх запитів в одній транзакції:

etcdctl txn --help

Транзакції в etcd дозволяють виконувати кілька операцій атомарно, забезпечуючи, що або всі операції застосовуються, або жодна з них. Це важливо для підтримки узгодженості даних при виконанні повʼязаних оновлень.

Приклад

Розглянемо сценарій, коли ви хочете оновити електронну пошту та номер телефону користувача в одній транзакції. Це забезпечує, що обидва оновлення застосовуються разом.

05_etcdctl_transaction_2024101213

  1. Налаштуйте початкові дані: Спочатку створіть користувача з початковими даними.

    etcdctl put /users/12345/email "old.address@johndoe.com" etcdctl put /users/12345/phone "123-456-7890"
  2. Виконайте транзакцію: Оновіть електронну пошту та номер телефону користувача в одній транзакції.

    etcdctl txn --interactive compares: value("/users/12345/email") = "old.address@johndoe.com" success requests (get, put, delete): put /users/12345/email "new.address@johndoe.com" put /users/12345/phone "098-765-4321" failure requests (get, put, delete): get /users/12345/email
    • Compare: Перевіряє, чи поточна електронна пошта “old.address@johndoe.com”. Це забезпечує, що транзакція продовжується лише якщо дані відповідають очікуваним.
    • Success: Якщо порівняння вірне, оновлюємо як електронну пошту, так і номер телефону.
    • Failure: Якщо порівняння не вдається, отримуємо поточну електронну пошту, щоб зрозуміти, чому транзакція не продовжилася.

Важливі моменти

  • Атомарність: Транзакція забезпечує, що як електронна пошта, так і номер телефону оновлюються разом. Якщо початкова умова (порівняння) не виконується, жодне з оновлень не застосовується.
  • Узгодженість: Використання транзакцій підтримує узгодженість даних, особливо при роботі з кількома повʼязаними оновленнями.
  • Уникайте кількох записів для одного ключа: Не записуйте кілька значень для одного ключа в одній транзакції, оскільки це може призвести до несподіваних результатів. Кожен ключ повинен оновлюватися лише один раз за транзакцію.