数据虚拟化和用户并发性

本文关键字:并发 用户 虚拟化 数据 | 更新日期: 2023-09-27 18:11:05

是否有人有任何关于如何解决在使用数据虚拟化时可能在多用户场景中出现的许多问题的指针/示例?假设我们正在讨论WPF和DataGrid。实现按需加载的虚拟化集合并不太难。但是,如果没有存储原始查询的临时结果的暂存区,我们就会遇到并发性问题,如:

  1. 加载新页面可能会获取不正确的数据(并发用户添加和删除一些记录,导致记录总数相同,但这导致页面获取已经显示在网格上方某处的重复条目)
  2. 在滚动和加载新页面时保留网格中的用户选择,在这种情况下,一旦选择的项目从缓存中过期,一旦重新加载,我们发现有人删除了它们。我们可以取消选择所有内容并向用户显示消息,但是:/此外,如果使用Shift-click (multiselect)在接近列表末尾的地方进行选择,当加载一些中间页面(并发用户添加的项目)时,一些项目"出现"在列表中间时应该怎么办?

数据虚拟化和用户并发性

请记住,从技术上讲,用户屏幕上没有任何内容是最新的。当你展示它的时候,你就在主数据集上落后了。

1)当然可以。但是,您可以始终跟踪您在网格上显示的第一个记录,并从那里获得下一个页面大小集。当然,那些被删除的将从视图中消失。或者,你可以尝试使用ZeroMQ或RabbitMQ这样的库来广播数据集的变化,并在数据网格当前显示时实时更新。显然,它仍然不会完全同步,但你将减少它们不同步的窗口。

2)当你选择项目时,你要跟踪它们的主键。我不知道你想怎么处理那些已经从主集中删除的。但你总能对其他的都起作用,对吧?即使它们不再显示,你也可以跟踪PK。并在加载页面时重新选择。