与基于 pouchdb 的系统客户端同步数据:'deleted' 标志是否有解决方法?
Data syncing with pouchdb-based systems client-side: is there a workaround to the 'deleted' flag?
我打算在后端使用 rxdb + hasura/postgresql。例如,我正在阅读 this rxdb page,它立即要求可同步实体具有 deleted
标志。
Q1(主要问题)
- 有没有任何点我可以最终硬删除这些实体?必须满足什么条件 - 例如,我可以简单地使用“早于 X 个月”然后强制我的应用程序只显示少于 X 个月的数据吗?
- 如果可能的话,这种硬删除是否最好直接在中央数据库中执行,因为它将成为真相的来源?如果我不是 foreseeing/understanding,客户端会有任何影响吗?
我预见 deleted
的数量在我的应用程序中快速增长,我不想永远存储所有这些额外数据。
Q2(奖金/只是好奇)
- 需要 'deleted' 标志的(算法)基础是什么?是不是检查一个标志比检查一个对象是否从一个非常大的列表中遗漏更快。如果这是一个愚蠢的问题,我深表歉意:(
最终取决于您的特定 business/product 关于您希望在系统中保留已删除实体多长时间的决定。对于某些应用程序,重要的是始终保留已删除内容的历史记录,甚至对作为分类帐或历史记录存储的记录的个别修订。您必须判断要将已删除的实体保留多长时间。
如果您还没有添加一个 deleted_at
列,我建议您也添加一个,这样您就可以轻松地利用像 Hasura 的新 Scheduled Triggers functionality 之类的东西来 运行 一个经常性的工作完全删除早于您的阈值的记录。
您还可以利用 Hasura 的权限系统来确保已删除的行不会返回给客户端。有 documentation and examples 软删除和 Hasura
的使用方法
对于你的第二个问题,检查记录上的删除标志肯定比必须尝试比较整个数据集以查找现在丢失的东西要快得多。
我打算在后端使用 rxdb + hasura/postgresql。例如,我正在阅读 this rxdb page,它立即要求可同步实体具有 deleted
标志。
Q1(主要问题)
- 有没有任何点我可以最终硬删除这些实体?必须满足什么条件 - 例如,我可以简单地使用“早于 X 个月”然后强制我的应用程序只显示少于 X 个月的数据吗?
- 如果可能的话,这种硬删除是否最好直接在中央数据库中执行,因为它将成为真相的来源?如果我不是 foreseeing/understanding,客户端会有任何影响吗?
我预见 deleted
的数量在我的应用程序中快速增长,我不想永远存储所有这些额外数据。
Q2(奖金/只是好奇)
- 需要 'deleted' 标志的(算法)基础是什么?是不是检查一个标志比检查一个对象是否从一个非常大的列表中遗漏更快。如果这是一个愚蠢的问题,我深表歉意:(
最终取决于您的特定 business/product 关于您希望在系统中保留已删除实体多长时间的决定。对于某些应用程序,重要的是始终保留已删除内容的历史记录,甚至对作为分类帐或历史记录存储的记录的个别修订。您必须判断要将已删除的实体保留多长时间。
如果您还没有添加一个 deleted_at
列,我建议您也添加一个,这样您就可以轻松地利用像 Hasura 的新 Scheduled Triggers functionality 之类的东西来 运行 一个经常性的工作完全删除早于您的阈值的记录。
您还可以利用 Hasura 的权限系统来确保已删除的行不会返回给客户端。有 documentation and examples 软删除和 Hasura
的使用方法对于你的第二个问题,检查记录上的删除标志肯定比必须尝试比较整个数据集以查找现在丢失的东西要快得多。