首页 > 解决方案 > 如何为两个或更多用户共享一个页面?

问题描述

我有理论问题。首先,我需要向您展示我的应用程序: 在此处输入图像描述

如您所见,您可以使用 ER 图创建数据库并生成一些 SQL 代码。单击按钮后,您将能够在我的本地数据库中创建自己的架构。每个用户都可以创建无限的模式。

那么这是我的问题:
如何允许两个或多个用户同时在同一个图表上工作?

这在类似的应用程序中是如何解决的?
在线数据库向导会生成一个任何人都可以访问的链接,然后这样一群人同时在处理一个图表。
编写这样的程序很难吗?
有人可以给我一些提示如何实现这样的事情吗?

我正在使用:java 1.8、spring boot、hibernate、js、jquery

标签: javahtmlspringspring-bootspring-security

解决方案


这变得非常复杂,快速。问题是合并。如果两个不同的用户同时以相互冲突的方式编辑某些给定数据(例如“人员”框),则您可以做出一些选择:

  • 完全拒绝任何“第二”的人进行编辑,并向他们显示错误。
  • 付出更多努力来尝试合并更改(但是,除非您有仅附加的数据集并且排序或决策基础并不重要,否则不可能总是成功;通常情况并非如此)。
  • 让一切尽可能生动。你输入一些东西,所有正在编辑它的人都会尽快看到它。如果人们遭受网络连接速度缓慢的困扰,那么冲突就会发生并把事情搞砸;随它吧。
  • 不允许同时编辑任何可能发生合并冲突的内容(因此一个用户可以编辑框 1,另一个用户可以编辑框 2,但他们不能同时编辑同一个框)。

“更酷”的答案显然要复杂得多。

一些例子/方法:

  • 一般来说,对所有内容进行版本控制是个好主意。有 ID 号(或时间戳,但是你必须确保你的时钟永远不会倒转;一些 ntp 守护进程可以做到这一点。闰秒之类的东西,所以这比听起来更难),并且每次实际编辑总是有“我正在处理 ID X 的版本,现在我希望它看起来像 Y”——这样如果你的数据库中的当前版本不再是 X,你就可以拒绝这样的编辑。对于事务性数据库,这保证永远不会失败。

  • 如果您只想在同时编辑时出错,以上就是您所需要的。

  • 一些聊天将极大地帮助同时编辑。Google Docs 就是这种技术的明显例子。这显然在服务器上相当复杂和繁重。

  • 如果您打算使用“不同时编辑”例程,那么要编辑资源,客户端会从服务器请求锁定,一旦完成,它就会放弃锁定。如果锁已经分发,您的服务器要么等待,要么显示错误。(当然,您可以提供只读版本)。但请确保正在发生一些积极的 ping 操作;如果有人客户通过网络电缆绊倒,您不希望资源被“卡住”!


推荐阅读