假设我的用户分布在这些表中:
user_notifications (
user_name
user_url
notification_text
notification_date
PRIMARY KEY(user_name, notification_date)
)
user_profiles (
user_name PRIMARY KEY
user_url
birth_date
..etc
)
现在,当用户更新他们的信息,这应该是如何工作的?更新两个表?如果我的模式增长并且有10多个表,如何跟踪存储冗余用户信息的位置?这有什么规律吗?我可以想到一个存储库模式,其中包含所有这些语句,但我不确定这是否是正确的方法。
使用批处理语句。批处理语句将减少网络往返,并确保原子性。
的例子:
BEGIN BATCH
INSERT INTO purchases (user, balance) VALUES ('user1', -8) USING TIMESTAMP 19998889022757000;
INSERT INTO purchases (user, expense_id, amount, description, paid)
VALUES ('user1', 1, 8, 'burrito', false);
APPLY BATCH;