【发布时间】:2017-03-05 10:13:16
【问题描述】:
我正在尝试创建一个近乎实时的 dwh。我的第一次尝试是每 15 分钟从我的 DWH 将一个表加载到我的应用程序中。
我想避免近乎实时的 DWH 可能面临的所有问题。其中一个问题是查询一个显示多选 html 标记值的空表。
为了解决这个问题,我想到了以下解决方案,但我不知道是否存在解决此类问题的标准。
我创建一个这样的表来保存多选的可能值:
CREATE TABLE providers (
provider_id INT PRIMARY KEY,
provider_name VARCHAR(20) NOT NULL,
delete_flag INT NOT NULL
)
在插入之前,我像这样更新表格:
UPDATE providers set my_flag=1
我用这样的 ETL 过程插入行:
INSERT INTO providers (provider_name, delete_flag) VALUES ('Provider1',0)
从我的应用程序中,我像这样查询表格:
SELECT DISTINCT provider_name FROM providers
虽然应用程序仍在运行并选择所有提供程序而不重复(源可以删除、添加或更新一个提供程序,所以我始终必须更新源代码)并且不会显示错误,因为表是空的,我可以运行它在插入语句之后的语句:
DELETE FROM providers WHERE delete_flag=1
我认为这对于小表或更改很少的大表来说是一个很好的解决方案,但是当表很大时会发生什么?有解决这类问题的标准吗?
我们不能冒用户可用性的风险,因为我们正在更新数据。
【问题讨论】:
标签: mysql database real-time etl data-warehouse