首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于gunDB作为Cordova项目的独立DB的具体问题

关于gunDB作为Cordova项目的独立DB的具体问题
EN

Stack Overflow用户
提问于 2016-06-16 15:16:03
回答 1查看 3.3K关注 0票数 12

我刚刚发现了gunDB,这个概念似乎非常有趣,在开始进一步评估它之前,我想了解更多关于它的信息。

  • 如果我想构建一个像教程一样的聊天应用程序,但实现聊天机房。是否有办法让客户只“订阅”某些聊天室,并避免转移其他聊天室的内容?如果不是所有的数据都被同步到所有客户端,那么这会如何影响持久性呢?我们需要运行一个特殊的客户端(即服务器)吗?确保所有数据在任何时候都保持存活?
  • 对于同一个聊天室教程,如果我想订阅多个聊天室,是否需要实例化多个Gun实例,每个实例都使用“对等”存储?
  • 如何在gunDB中处理用户管理/密码/等等?从复制站点向每个客户端发送用户DB的副本是很有趣的,但从安全性方面看,这似乎有悖于直觉。
  • 在某些情况下,例如当WiFi连接可用时,是否有一种方法只要求gun同步(想想Cordova)?
  • 那么数据是暂时的呢?例如,在聊天应用程序中是否有一种方法可以告诉gunDB,我只对未来的消息感兴趣,而忽略了在某个状态/时间戳之前创建的任何内容(同样是为了避免在昂贵的数据计划上传输大量数据)?
  • 如何持久化gunDB中的磁盘(可能是循环的)数据,并在需要时将数据加载回DB中?
  • 你能让枪同时监视两把钥匙吗?例如,如果客户端需要显示聊天数据和待办事项列表(教程中的两个“键”),假设两者都是“窥视”的。
  • 有关于如何使用我自己的服务器存储的教程吗?
EN

回答 1

Stack Overflow用户

发布于 2016-06-17 20:31:57

  1. 聊天室。因此,按照chat tutorial加载聊天“表”的方式,您可以只拥有一个“聊天室”表。那你就只能占你想要的房间了。因为gun使用partials是快速的,所以它只会加载您订阅的数据。是的,客户端只能存储作为一个整体的数据子集--当然,这可能会影响您的复制/持久性级别。如果您担心这一点,那么运行一个“强”对等程序(如服务器)是一个简单而完美的解决方案,因为它会备份所有内容。(不幸的是,由于WebRTC有问题,所以您无论如何都必须运行中继服务器对等点。所以最好也用它来存储)。
  2. 多实例。每个键不需要实例化多个枪实例。事实上,这是很糟糕的。如果你不这样做会更好。这是可能的,但我们还没有像我们应该测试的那样多,因为它并不理想。
  3. Security/authorization是一个非常敏感的主题,所以这很大程度上取决于你想如何构建你的应用程序。如果您要进行真正的P2P/分散设计,那么您需要进行端到端的公开/私钥cryptography and signatures。这样,即使其他用户可能帮助备份数据,也无法真正读取数据。然而,如果你想保持简单的事情,并建立你的应用程序,就像大多数应用程序是构建的.作为一个集中式服务,您将代理写入服务器。这是大多数人在构建应用程序时使用的相同技术,而枪也可以做同样的事情。
  4. WiFi/速率限制数据。不幸的是,这在JavaScript中并不是直接可用的,但是听起来像您提到的PhoneGap混合应用程序可以访问这些信息。枪的设计是为了在这种情况下工作,因为它是离线第一的。但是你如何与外部API接口给你这些条件..。不是我的经验,而是可行的。
  5. 时态数据/限制数据传输。首先请参阅我的上述响应,它是可行的,但依赖于外部API。不过,就限制查询而言,是的。答:我们很快就会引入“词法游标”,这将允许客户端约束响应,不过,我们可能会逐步推出其每个约束特性(因为它对社区来说并不是一个很大的优先事项,但您的参与会使其升级!),首先使用精确的属性匹配(比如SQL select语句--事实上,这就是我们将用来为gun创建SQL查询扩展的方法!),然后是一个词法范围(选择以'a‘到’c‘开头的属性,这个范围可以用时间戳范围完成,然后,第三个字节约束(一次最多只能发送200字节)。但是,很明显,您可以自己手动操作(不是您想要的),您只需要一张房间表,然后这个房间就是一张块表,而块则是一张消息表。由于房间也有一个“最后”块,那么你可以通过做gun.get('rooms').path('mychatroom').path('last').map().val(function(message){ console.log(message); });之类的操作来轻松地访问你的聊天应用程序。这将允许您完全控制您想要的条件,但也意味着您必须做更多的工作。
  6. 循环参考文献.已经为您完成了,有多少循环引用,您想-这是枪炮的优势,因为它的图形结构(循环参考,表,文档,键/值,什么)。
  7. 是的,枪可以同时监视多个键。
  8. 用你自己的服务器存储..。这可能意味着几件不同的事情。如何运行你自己的枪服务器?有一个简单的包装器:https://www.npmjs.com/package/gun-server。如果您想要使用Express之类的示例,那么这些示例也很简单。如何使用当前部署的服务器的文件系统作为存储,因为您不想使用S3?您可以使用级别驱动程序https://github.com/PsychoLlama/gun-level。回答了吗?

*WebRTC需要STUN/ICE/信令服务器来引导WebRTC连接。这太烦人了。这意味着,即使WebRTC是P2P,为了连接,您必须通过一些服务器,这必须为每一个页面负载感到高兴。因此,我们默认使用websockets/JSONP捆绑枪,它必须连接到枪支中继服务器对等端(还有一些社区枪支中继对等点可以用于个人实验,但可以像在Point4中那样轻松地运行自己的设备)。因此,我们还没有发布WebRTC适配器,尽管WebRTC + gun是一个非常适合的服务器--愚蠢的眩晕/ICE/信令服务器。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37863163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档