Як зробити кілька записів у транзакції
Передумови
- Встановіть
etcd
таetcdctl
Транзакції
txn
для обробки всіх запитів в одній транзакції:
etcdctl txn --help
Транзакції в etcd дозволяють виконувати кілька операцій атомарно, забезпечуючи, що або всі операції застосовуються, або жодна з них. Це важливо для підтримки узгодженості даних при виконанні повʼязаних оновлень.
Приклад
Розглянемо сценарій, коли ви хочете оновити електронну пошту та номер телефону користувача в одній транзакції. Це забезпечує, що обидва оновлення застосовуються разом.
Налаштуйте початкові дані: Спочатку створіть користувача з початковими даними.
etcdctl put /users/12345/email "old.address@johndoe.com" etcdctl put /users/12345/phone "123-456-7890"
Виконайте транзакцію: Оновіть електронну пошту та номер телефону користувача в одній транзакції.
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: Якщо порівняння не вдається, отримуємо поточну електронну пошту, щоб зрозуміти, чому транзакція не продовжилася.
Важливі моменти
- Атомарність: Транзакція забезпечує, що як електронна пошта, так і номер телефону оновлюються разом. Якщо початкова умова (порівняння) не виконується, жодне з оновлень не застосовується.
- Узгодженість: Використання транзакцій підтримує узгодженість даних, особливо при роботі з кількома повʼязаними оновленнями.
- Уникайте кількох записів для одного ключа: Не записуйте кілька значень для одного ключа в одній транзакції, оскільки це може призвести до несподіваних результатів. Кожен ключ повинен оновлюватися лише один раз за транзакцію.
Відгук
Чи це було корисним?
Раді чути! Будь ласка, повідомте нам, як ми можемо зробити краще.
Дуже шкода це чути. Будь ласка, повідомте нам, як ми можемо зробити краще.