我们正在构建一个从API读取数据并将其显示在前端的应用程序。由于API的限制,我们必须缓存API调用,这意味着我们将API调用的结果(用户信息(名字,国家/地区,电子邮件等)和大量活动日志数据集)保存在数据库中,并且仅请求如果存储的数据早于x小时,则来自API的新数据。对于每个用户,应用程序都连接到不同的API端点(例如,“ user1.api.com/data/whatever”和“ user2.api.com/data/whatever”)。

最终将有两个数据库。一个用于缓存外部工具的API调用,另一个用于缓存应用程序的用户管理。但是,我们不确定最好使用什么。

使用云数据库进行缓存或用户管理通常是一个好主意吗?由于该应用程序将在Google Container Engine上运行,因此我们可能会使用Google Cloud Storage(用于缓存)和Firebase(用于用户管理)。还是我们应该使用Redis / ElasticSearch之类的东西(用于缓存),为不同的用户数据使用不同的东西?

评论

这是一个经过实践和验证的问题的现代版本:“我的代码很简单,为什么我不能仅将文件系统用作数据库?”

#1 楼

我对Redis / ElasticSearch的了解不多,但是GCS并不是真正的类似于数据库的解决方案,它更接近于文件存储解决方案。

如果您正在寻找类似数据库的存储Google Cloud提供:


Cloud SQL
Cloud Bigtable
Cloud Datastore
Cloud Spanner

如果您期望适当的应用流量或交替使用高/低流量,那么拥有Google App Engine应用程序而不是基于GCE的解决方案可能更具成本效益(且更简单)。

#2 楼

我们有类似的要求,因为需要在服务器中缓存一组数据以为应用程序提供服务(快速处理),而且到一天结束时,我们需要将数据从缓存服务器同步到原始服务器。

从长远来看,我建议您使用Redis,因为您可以将Redis作为中间数据库(缓存),这将有助于您进行扩展。

您可以编写脚本以在一天中的某个时间间隔或一天的特定时间运行,以便您可以从源服务器(外部应用程序)拉/推数据。

您的要求完全不需要Elastic Search时间点,因为它可以帮助您基于缓存加速搜索结果,它只是一个搜索引擎。