繁体   English   中英

分散式同步安全数据存储

[英]Decentralized synchronized secure data storage

介绍

嗨,我要问一个对我来说似乎很普遍的问题,但我需要知道是否有一种方法可以实现我所需要的。 如果不是,我需要知道为什么不这样做

这个主意

假设我在MySql中有一个数据库结构。

我想创建一些解决方案,以允许任何人(无论谁,无论在哪里)都具有该数据库(及其内容)的同步副本(更新的克隆)

好吧,它并不仅仅是一个同步副本,它可以(并且应该)是多重复制(假设基本复制,这意味着,例如,全世界有十个副本)

而且,最重要的是:它必须安全 所谓安全,是指只有真正接受的事务才会与所有其他(无论有多少个)数据库副本/克隆进行同步。

注意 :由于实时同步非常困难 ,因此,我将设计一切以使此功能不再需要。 因此它不是必需的。

我的自动建议

这就是我正在考虑的管理方式:

时间标识符和更新检查 :每个动作(插入,更新,删除...)将作为与时间标识符关联的动作指令本身存储。 [例如,我认为比DATETIME字段更好,它将是INT,例如,从2013年1月1日起经过的毫秒数] 因此,每个副本将向“邻居副本”询问自上次更新以来执行的新操作,并在检查允许后执行它们。

问题1“邻居副本”也可能过时。
解决方案1 :不要问一个邻居,创建一个包含一些副本/克隆的随机列表 ,然后向他们询问消息(我可以避免使用该列表,并向所有克隆询问更新,但是如果克隆数量也上升,这将是无效的很多)

问题2 :实时全局同步未激活。 如果...

   Someone at CLONE_ENTERPRISING inserts a row into TABLE.
   ... this row goes to every clone ...
   Someone at CLONE_FIXEMALL deletes this row.
   ... and at the same time, somewhere in an outdated clone ...
   Someone at CLONE_DROPOUT edits this row (now inexistent at the other clones)

解决方案2 :简单的操作,在执行任何新的“ 取决于数据的操作” (例如,编辑)之前,强制执行GLOBAL同步。 这种全球同步。 例如,在进行INSERT时将不必要。

注意 :嗯,某人可能会很有趣,并在两个克隆中进行相同的插入...由于它们没有实时更新,因此该行将存在两次。 但是,这与我们只有一个数据库的情况相同,在某些需要的情况下,我们在执行最终操作之前会检查是否存在相同的行。 没问题

问题3 :可以编辑代码而不过滤动作,因此有人可以散布指令以删除所有内容,或仅进行一些拖钓活动。 这不是问题,因为好的克隆总是存在于某个地方。 那些变坏的人将不再感兴趣。

如果您阅读,我将不胜感激。 我知道这不是一个完美的解决方案,它可能有数百个漏洞,但这是我的基本出发点。 现在,我将感激您现在可以教我的一切。 非常感谢。

PS .:可能是我正在尝试的所有操作都已经存在并具有自己的名称。 不好意思问(如果有的话,我还是要感谢这个名字)

我建议您看一下Microsoft的Sync Framework 它可能更适合SQL Server,但它也应与MySQL一起使用。 您要解决的问题是一个非常复杂的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM