使用案例:枪数据库存储模型的大型集中存储数据,微小的协作客户
说我想创建一个实时的协作文档编辑系统。
在这种情况下,许多用户可以在许多文档上创建和协作。
由于客户端设备的限制,任何客户端都不可能保留所有文档的副本,只有少数几个。
需要中央存储服务器,其中所有文档总是存活,并且此服务器始终备份。
每个客户端都可以'订阅'任何文档,并且订阅的所有客户端都可以看到订阅/编辑同一文档的所有其他客户端的实时更改。
问题:
由于每个客户端不能存储所有文件,需要有一种方法来去除来自客户端的“老”的文件副本,而不从中央存储删除文件,理想情况下基于自动最近最少使用的方法。这在枪中如何处理?
在枪中,如何从中央存储中删除文档,以便将其从所有客户端有效地永久移除并且无法访问?
从中央存储中删除文档时,物理存储空间如何实际回收供以后使用?
谢谢你的回复。 Re#2&#4,当浏览器重新打开时,不会总是最终联系活跃对等方?如果是这样,'localStorage.clear()'不会受到伤害,但如果不能连接到'主'节点,就不应该调用? Re#3,如果所有的客户都离开了,那么服务器将是单个副本,这不是备份;理想情况下,真正的备份只不过是另一个服务器枪,但实际上会收到主人发生的所有变化?此外,或用例需要支持Azure,Google,其他云提供商和内部部署 – user2672083
我们目前正在使用Firebase以及Druid和ElasticSearch。我们正在考虑取代Firebase。在对枪码进行更深入的研究之后,从概念上来看,“存储”接口枪似乎可以更好地定义和抽象。然后它可以与'客户端'或'服务器'实现对话,谁会处理事物的生命周期,他们自己使用相同的接口,然后坐在实际的存储提供者之上。这是重构我们可以协助并为枪支做贡献的东西吗? – user2672083
@ user2672083通过编辑答案回复:)回复:现在你已经可以部署到他们的Azure/GCS,并且复制枪的S3适配器/驱动程序并将其替换为Azure/GCS Blob Store API - 或者我们可以构建它这为你轻松地(发送电子邮件到企业[AT] gunDB [DOT] io的定价)。与存储/抽象层相同,GUN具有简单的线规格,使我们可以为您构建新的/可交换的驱动程序/适配器变得很容易。让我知道! – marknadal