1

我打算在后端使用 rxdb + hasura/postgresql。例如,我正在阅读这个 rxdb 页面,它要求可同步的实体有一个deleted标志。

Q1(主要问题)

  • 有没有什么时候我可以最终硬删除这些实体?必须满足哪些条件 - 例如,我可以简单地使用“早于 X 个月”,然后强制我的应用程序仅显示少于 X 个月的数据吗?
  • 如果可能的话,这种硬删除是否最好直接在中央数据库中进行,因为它将是事实的来源?会有我没有预见/理解的客户端影响吗?

我预见到deleted我的应用程序中的数量会迅速增长,我不想永远存储所有这些额外的数据。

Q2(奖金/只是好奇)

  • 需要“已删除”标志的(算法)基础是什么?是不是检查一个标志比检查一个对象的遗漏更快,比如说,一个非常大的列表。如果这是一个愚蠢的问题,我深表歉意:(
4

1 回答 1

0

最终,它归结为由您的特定业务/产品通知的关于您希望在系统中保留已删除实体多长时间的决定。对于某些应用程序,重要的是始终保留已删除内容的历史记录,甚至是对存储为分类帐或历史记录的记录的个别修订。您必须判断要保留已删除实体的时间。

如果您还没有添加一列,我建议您也添加一deleted_at列,然后您可以轻松地利用 Hasura 的新计划触发器功能来运行重复作业,该作业完全删除早于您的阈值的记录。

您还可以利用 Hasura 的权限系统来确保已删除的行不会返回给客户端。有关于使用软删除和 Hasura 的方法的文档和示例

对于您的第二个问题,检查记录上的已删除标志肯定比必须尝试比较整个数据集以查找现在丢失的东西要快得多。

于 2020-08-26T13:02:41.650 回答