有关GundB作为Cordova项目的独立DB的具体问题



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

  • 如果我想构建一个像教程这样的聊天应用程序,但是实现聊天 Rooms 。客户是否只有一种方法只能"订阅"某些聊天室,并避免转移每个其他聊天室的内容?如果不是全部数据同步所有客户,这将如何影响持久性?我们是否需要运行特殊客户端(即服务器?),以确保所有数据始终保持活力?
  • 对于同一聊天室教程,如果我想订阅多个聊天室,我需要实例化多个枪支实例,每个枪支实例都使用" peer"存储?
  • GundB中应如何处理用户管理/密码/等?向每个客户发送一个用户数据库的副本很有趣复制站点,但从安全方面看来直观。
  • 有没有办法要求枪支在某些情况下仅同步,例如何时可用WiFi连接(想想Cordova)?
  • 暂时的数据呢?聊天应用中有没有办法实例告诉GundB我只对将来的消息感兴趣并忽略在某个之前创建的任何东西状态/时间戳(再次避免传输大量数据昂贵的数据计划)?
  • 您如何在gundb中持续到磁盘(潜在的循环)数据将数据加载到DB中是否应该出现?
  • 您可以要求Gun同时监视两个钥匙吗?例如,如果客户端需要显示聊天数据和待办事项列表(教程中的两个"键"),假设这两个都"凝视"。
  • 是否有有关如何使用我自己的服务器存储的教程?
  1. 聊天室。因此,以聊天教程加载聊天"表"的方式相同,您可以只有一个"室"表。然后,您只能抓住想要的房间。由于枪支使用局部快速,所以只会加载您订阅的数据。是的,客户端只能存储整个数据的子集 - 但是,当然,这可能会影响您的复制/持久性级别。如果您担心这一点,那么运行一个"强"同行(如服务器)是一个简单而完美的解决方案,因为它将备份所有内容。(不幸的是,由于WEBRTC有问题*,您无论如何都必须运行继电器服务器对等。因此,也可以将其用于存储)。

  2. 多个实例。您无需每键实例化多个枪支实例。实际上,这很糟糕。如果您不这样做,那就更好了。这是可能的,但是我们没有尽可能多地测试它,因为它不是理想的。

  3. 安全/授权是一个非常敏感的主题,因此这极大地取决于您想如何构建应用程序。如果您要进行真正的P2P/分散设计,那么您需要尽力结束公共/私有密钥密码和签名。因此,即使其他用户可能会帮助备份数据,也无法实际读取数据。但是,如果您想像大多数应用程序一样构建了简单的内容并构建应用程序...作为集中式服务,那么您将代理服务器写入服务器。这是大多数人当前在构建应用程序时使用的技术,而Gun可以做同样的事情。

  4. wifi/rate-限制数据。不幸的是,这在JavaScript中无法直接可用,但是听起来像您提到的Hybrid应用程序可以使用PhoneGap可以访问该信息。由于枪支是脱机优先,因此枪支旨在在这种情况下使用。但是您如何与给您这些条件的外部API交互...不超出我的经验,但可行。

  5. 时间数据/限制数据传输。首先请参见我的上述响应,可行,但取决于外部API。在限制查询方面,是的。答:我们很快就会引入"词汇光标",这将使客户能够限制响应,但是我们可能会逐步推出其每个约束功能(因为这不是社区的重中之重,但是您的参与首先将升级它!),首先具有精确的属性匹配(例如SQL Select语句 - 实际上,这是我们使用gun的SQL查询扩展名来使用的!可以使用时间戳范围来完成的" a" ta"),然后是第三个字节约束(就像一次最多只有200 bythe)。但是,您可以手动做自己的一件明显的事情(不是您想要的),您可以只有一张房间,然后房间是一张碎片,块是一张消息表。有可能在房间里还有一个"最后"块,然后您可以通过执行gun.get('rooms').path('mychatroom').path('last').map().val(function(message){ console.log(message); });或类似的操作来轻松访问聊天应用程序。这将使您可以准确控制所需的条件,但也意味着您必须做更多的工作。

  6. 循环引用。已经为您完成,拥有尽可能多的圆形引用 - 这是枪的图形结构(圆形参考,表,文档,键/值等)。

  7. 是的,枪可以同时监视多个键。

  8. 使用自己的服务器进行存储...这可能意味着几个不同的事情。如何运行自己的枪服务器?有一个简单的包装器:https://www.npmjs.com/package/gun-server。如果您想要用特快和内容的示例,那也很简单。如何使用当前部署的服务器的文件系统作为存储,因为您不想使用S3?您可以使用Level驱动程序https://github.com/psychollama/gun-level。那回答了吗?

*WebRTC需要眩晕/冰/信号服务器来引导WebRTC连接。这是超级烦人的。这意味着,即使WebRTC是P2P,为了连接连接,您必须通过一些服务器,这必须为每个页面加载而高兴。因此,默认情况下,我们必须使用WebSockets/JSONP连接到枪中继服务器对等(也有社区枪中继同行,人们可以将其用于个人实验在Point4中)。结果,尽管WebRTC Gun是一个完美的合适事实,但我们尚未发布WEBRTC适配器。

最新更新