目前,我们向邮件列表中的订阅者发送电子邮件。这具有一个跟踪像素,该像素映射到一个 PHP 文件,然后将数据插入我们的 SQL Server 数据库。
电子邮件跟踪像素插入的当前平均值约为每天 80,000 个插入。而大约 800,000 次插入相当于大约 1GB 的硬盘空间,因此 10 天 1GB 的数据。
除此之外,我们还有其他插入和跟踪数据被插入到 SQL Server 数据库中,该数据库也恰好是网站使用的同一数据库。因此,出于空间、性能、许可成本和水平扩展等原因,我想将此分析跟踪数据从 SQL Server 数据库中移出 + 网站不需要此分析跟踪数据这一事实,因此我想将这些写入繁重的插入离开,以便网站数据库就是这样。
目前的表结构
TrackingPixelId | 用户名 | 代码 | 中 | 来源 | 查看日期 | 会话 ID
9109616 | 第1234章 'BULLETIN120115' | '电子邮件' | 'BULLETIN120115' | {日期时间} | bf7e2f801...
栏目信息
TrackingPixelId : PK 整数自动递增
用户 ID:整数
代码、媒介和来源:字符串/varchars
DateViewed: DateTime 例如 2015-01-13 06:18:24.920
SessionId : 例如 fa5cac87896e1c7b423051fffdb836a6
Code 和 Source 本质上是相同的,即打开的 Email Mail Out 的唯一 ID。
因此,就如何报告数据而言,我们将查看已打开电子邮件的数量。因此,每日、每周、每月和每年的报告,我们不需要立即生成报告,可能每天的写入量可能很大,而只需要大量读取,但可能首先需要最新的数据。
那么考虑所有这些因素,什么是最好的分片键?