代码之家  ›  专栏  ›  技术社区  ›  user8280126

事件源/CQRS聚集索引和分区

  •  0
  • user8280126  · 技术社区  · 7 年前

    我在税务处理公司工作,使用SQL Server 2016。我们处理数以百万计的税务信息申报,并建立并发、多线程、并行处理系统。

    1. 您通常建议对写事件存储表进行分区吗?

    2. 当我们更新用于查询的读取模型时,我们是否仍然应该利用并行处理来更新读取模型?还是应该进行单流更新?

    3. 我们应该划分读取模型表还是其他方法?

    https://blogs.msdn.microsoft.com/sqlserverfaq/2010/05/27/guid-vs-int-debate/

    然而,标识(1,1)整数列上的索引会导致锁存争用,最后一页会在并行处理中插入热点。 http://www.sqlpassion.at/archive/2014/04/15/an-ever-increasing-clustered-key-value-doesnt-scale/

    1 回复  |  直到 7 年前
        1
  •  0
  •   Daniel Little    7 年前

    您的个人需求将取决于您独特系统的架构。通常,您需要能够测试、测量和分析,以确定您的瓶颈是什么(或将是什么)。

    例如,您在任何时间并行写入的节点数以及您在任何时刻所需的吞吐量。

    • 您可能需要GUID id(索引)和第二列作为聚集索引。我使用标识(序列号)列作为集群索引,因为它是在数据库中生成的。通常情况下,您不会并行地物理写入磁盘(即使您尝试并行写入),所以只需使其快速简单(并对其进行分析!)。

    我不确定你对EventSourcing有多熟悉,但我推荐这两种资源还不够。

    http://docs.geteventstore.com/introduction/4.0.2/event-sourcing-basics/ https://leanpub.com/esversioning