AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1082858
Accepted
sffc
sffc
Asked: 2021-11-08 12:46:16 +0800 CST2021-11-08 12:46:16 +0800 CST 2021-11-08 12:46:16 +0800 CST

如何将 GCP 云存储桶元数据同步到数据库?

  • 772

我有大量对象,目前大约 100 万个,存储在 GCP 云存储桶中。对象以每天 1-2 千个的速度添加。我想有效地运行查询以根据这些对象的元数据查找存储桶中的对象,包括文件名中缀/后缀、创建日期、存储类等。

Cloud Storage API 允许按文件名前缀 ( docs ) 进行搜索,但回调需要几秒钟才能完成。我可以使用gsutil, like进行中缀查询gsutil ls gs://my-bucket/foo-*-bar.txt,但这更慢。此外,这些查询被视为A 类操作,会产生成本。

与其使用 Cloud Storage API 来搜索我的存储桶,我想我可以将存储桶中所有对象的列表添加到 Bigtable 或 SQL 等数据库中。数据库应该与存储桶的所有更改保持同步,至少在创建或删除对象时,最好是在修改、存储类更改等时。

实现这一目标的最佳方法是什么?

google-cloud-platform google-cloud-storage google-cloud-sql
  • 1 1 个回答
  • 236 Views

1 个回答

  • Voted
  1. Best Answer
    John Hanley
    2021-11-08T17:35:59+08:002021-11-08T17:35:59+08:00

    第一步是为数据库设计表和列,确定元数据的存储方式,设计查询语句和更新语句。

    然后实施 Cloud Storage 触发器以通知您编写的服务以处理来自 Cloud Storage 的事件。Cloud Functions 和 Cloud Run 通常用于处理事件。作为处理事件的一部分,您的代码将更新数据库。

    触发器正常工作后的最后一步是扫描整个存储桶并使用每个 Cloud Storage 对象的元数据更新数据库。

    你的问题不包括细节。最好使用 number 语句,而不是在 GCP Cloud Storage Bucket 中存储大量对象。对我来说,这意味着至少有数千万个物体。您的问题不包括有关 Cloud Storage 中发生变化的速度或您需要执行的实际查询的信息。

    请记住,Cloud Storage 是一个平面命名空间。层次结构(文件夹/目录)的概念在软件中被模拟。如果您将命名空间存储在与存储在 Cloud Storage 中相同的数据库中,那么性能可能不会更好。

    我已经为 AWS、Google Cloud 和 Azure 多次实施了您的设计类型。除非您真的想要事件驱动系统的复杂性,否则我建议偶尔阅读存储桶并创建一个可以使用 grep、awk 等处理的简单文本电子表格。

    • 2

相关问题

  • 带有 OpenVPN 的 Google Compute Engine 上的 VPN 服务器

  • 如果您失去了 Google Apps 的管理员权限,如何恢复?

  • 云有多大?[关闭]

  • 谷歌应用引擎中的 joomla

  • 无需短信即可注册 Google AppEngine?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve