源表含时间戳、做逻辑删除的情况,数据同步ETL方案分享

要求至少半小时会同步一次数据。

下面是我的方案图。

我觉得比较鸡肋的是,我的stage库表里每次存的只是本轮同步中新增的数据,若本轮没有任何新增的数据,那么stage对应的表就是空的。

其实一开始我很想设计出一个source表的副本库,存的是一模一样的数据。但是想到这个副本库可能要经历全删全增,频繁的短时间的读写会带来整体的性能下降,我就放弃了。

还想把stage库作为2次开发库,通过它能整合出新数据,但想得太天真了。欢迎讨论、请求指导教育~






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt中使用多线程来比较数据时间来判断收到数据的一致性,可以按照以下步骤操作: 1. 创建一个数据类,该类负责生成时间并将数据发送给其他线程。 2. 创建一个比较类,该类负责接收不同线程发送的数据,并比较它们的时间。 3. 在主线程中创建数据和比较类的实例,并启动它们的线程。 4. 当数据发送新数据时,比较类将接收到它并进行比较。 5. 如果时间相同,说明数据一致;否则数据不一致。 下面是一个简单的示例代码,演示了如何使用Qt的多线程来实现上述步骤: ```cpp // 数据类 class DataSource : public QObject { Q_OBJECT public: DataSource() {} public slots: void sendData() { // 生成时间和随机数据 QDateTime timestamp = QDateTime::currentDateTime(); int data = qrand(); // 发送数据 emit newData(timestamp, data); } signals: void newData(const QDateTime& timestamp, int data); }; // 比较类 class DataComparator : public QObject { Q_OBJECT public: DataComparator() {} public slots: void processData(const QDateTime& timestamp, int data) { // 比较时间 if (timestamp == m_lastTimestamp) { qDebug() << "Data is consistent"; } else { qDebug() << "Data is inconsistent"; } // 保存最新的时间 m_lastTimestamp = timestamp; } private: QDateTime m_lastTimestamp; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建数据和比较器 DataSource dataSource; DataComparator dataComparator; // 创建线程并移动对象到线程中 QThread sourceThread, comparatorThread; dataSource.moveToThread(&sourceThread); dataComparator.moveToThread(&comparatorThread); // 连接信号和槽 QObject::connect(&dataSource, &DataSource::newData, &dataComparator, &DataComparator::processData); // 启动线程 sourceThread.start(); comparatorThread.start(); // 定时发送数据 QTimer timer; QObject::connect(&timer, &QTimer::timeout, &dataSource, &DataSource::sendData); timer.start(1000); return a.exec(); } ``` 在上面的代码中,数据类使用了Qt的信号和槽机制来发送数据,并且定义了一个`sendData()`槽来定时发送数据。比较类使用了一个成员变量`m_lastTimestamp`来保存最近接收到的时间,并通过`processData()`槽来接收数据并比较时间。在`main()`函数中,我们创建了数据和比较器的实例,并将它们移动到对应的线程中,然后连接了它们的信号和槽,最后启动了定时器来定时发送数据。 当运行上面的代码时,程序将每秒发送一个带有时间的随机数据,并在控制台输出数据是否一致的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值