我目前正在改进一个遗留的黑名单/白名单管理服务,它将整个列表作为一个字符串blob存储在一列中。此外,version列也没有唯一的约束,这意味着在更新该列表时会出现同步问题。
作为重新架构设计的一部分,我的一个同事建议使用关系数据库来存储列表。元数据表( listMetada
)可以包含 id, list_name, created_date, creator
. 列表中可能的操作可以是:
批量插入
批量删除
还原到旧版本
重置-上载新列表
实际的列表条目将在一个单独的表格中- list_entries
有 id, list_id(FK), entry(string), created_at, deleted_at
. 我正在考虑根据时间戳实现这些版本。e、 g.从 Time T
:
1. Fetch all rows (from ListEntries table) for that listID where createdAt <= T
2. Remove all rows from the above where deletedAt <=T
然而,在我看来,这似乎不是一个非常干净的方式来处理这样的数据列表。我遇到了关于时态对象的设计模式,并认为可能有更好的方法来处理此类版本控制问题(参考:这是一个很好的答案)。我想要设计这样一个系统的建议。ps:仅使用关系数据库没有硬性规定。文档存储,如果效率高,也可以使用。
暂无答案!
目前还没有任何答案,快来回答吧!