当前位置: 首页 > 知识库问答 >
问题:

如何在我的mongodb和Google电子表格之间同步?

陈阳舒
2023-03-14

我想使用谷歌电子表格允许人们可视化和编辑存储在mongob集合中的表的数据。

数据由web服务创建,每天创建大约50个mongodb集合。(数据本质上是表格式的:集合的所有文档都是具有相同键的平面键值对象。)

现在,我想让公司内部的人使用谷歌电子表格可视化和编辑表格的数据。

我正在寻找保持mongobd和Google Spreasheets同步的最佳方法。

我看了Google Sheets API和Google Drive API。看来是可行的。我的设计是:

  1. 每次web服务向mongo集合写入数据时,它都会通过Google Sheets API(java)更新相应的电子表格。
  2. 每隔一分钟,我会使用GoogleDrive修订版API检查最近更新的电子表格

我可以区分人们通过电子表格应用程序进行的更改和网络服务进行的更改,因为网络服务使用特殊用户。

但据我所知,Google Drive修订版API不允许只获取一组用户所做的更改。

我的设计合适吗?

共有1个答案

慕容昊焜
2023-03-14

如果您确实想使用更改跟踪方法,请将数据持久性层推送到MongoDB和某种队列(Redis?RabbitMQ?)。然后让另一个服务从队列中读取数据,将数据推送到Google Sheets中。这样,您就有了一个有序的记录,记录了应该发生的事情,而不会减慢数据的持久性(至少不会减慢太多)。这可以变得非常健壮,这样如果你的服务关闭,或者谷歌工作表应用编程接口关闭,你就不会失去跟踪,必须进行完全重新同步

我不确定我们在这里讨论了多少数据,但如果可能的话,每隔几分钟或根据您的实际需要,将整个数据库转储到电子表格中可能比更改跟踪所有内容更容易。

如果您有预算,您可能还想查看商业智能工具。它们是专门为基于您的数据向业务人员提供信息而设计的。它们还可能有一个连接器,用于从MongoDB中吸收所有数据,而无需校正集成层。然后你可以专注于构建对你的业务更重要的东西。

 类似资料:
  • 我是一名编码等方面的初学者,但我正在努力理解我在做什么以及代码中发生了什么。 我想在不同的电子表格之间划一行。 我在“核心”电子表格中有一个脚本,它在“主页”和“完成”表格链接之间移动一行到电子表格: 我搜索了如何将位于“已完成”工作表上的数据移动到另一个名为“数据库”的电子表格链接到电子表格: 但我想将数据从表“CORE”/“Finished”传输到表“database”/“DB”,而不重写DB

  • 我很难找到将多张工作表同步到主电子表格的方法。在我的测试中,我有一个大的电子表格,上面有5个城市的地址。我正在尝试为每个城市创建一个电子表格,并能够在任何一个表格中更改数据时同步数据。因此,我将管理总体数据,5张电子表格中的每一张都将分配给其他人。这样,他们就可以在不访问所有数据的情况下更新工作表。使用内置查询或导入功能的问题是,如果用户在“城市”电子表格上进行更改,它将破坏该表格,因为数据被引用

  • 我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?

  • 从GoogleSpreadsheetsAPI上的GoogleDeveloper文档开始,我发现“提供了许多不同语言的客户端库”,但Google只提供Java和.NET的客户端库。对于PHP库,他们建议使用Zend GData。因此,我浏览了Zend GData repo,Zend说他们的GData组件已经停止使用,并使用Google API客户端库进行PHP。该库不适用于电子表格API,因此您必须

  • null All运行良好(无论如何都没有错误),直到调用触发异常: 出现错误:调用GET时出错:(403)超出了未经身份验证的每日使用限制。继续使用需要注册。 我做错了什么?我把头发拔了(嗯,剩下的)。

  • Google Drive API和Google电子表格API(v 3.0)都支持获取以下URL对应的[KEY]的方法: https://docs.google.com/spreadsheet/ccc?key=[键] 我正在使用该文件。Google Drive API的getId()方法和电子表格条目。getId或。Google电子表格API的getKey()方法。 Google Drive API