Bigtable 还是 Datastore 更适合在线应用程序存储和使用财务数据?

Is Bigtable or Datastore more suited to storing and using financial data for online applications?

我正在创建一个股票分析 Web 应用程序。我想存储多只股票的财务数据。然后我想对它们使用股票筛选器。该筛选器涉及从后端检索多只股票并对它们执行技术指标测试。通过指标测试的股票将return发送给用户。假设我想为 exampleStock:

存储一个 pandas.dataframe
          open    high      low   close    volume
date                                                 
2017-08-01  247.46  247.50  246.716  247.32  55050401
2017-08-02  247.47  247.60  246.370  247.44  47211216
2017-08-03  247.31  247.34  246.640  246.96  40855997
2017-08-04  247.52  247.79  246.970  247.41  60191838
2017-08-07  247.49  247.87  247.370  247.87  31995021
....

我一直在使用 DataStore。我为每只股票创建实体,将键设置为股票代码。我使用这样的模型:

from google.appengine.ext import ndb

class Stocks(ndb.Model):
    dates  = ndb.StringProperty(repeated=True)
    open   = ndb.FloatProperty(repeated=True)
    high   = ndb.FloatProperty(repeated=True)
    low    = ndb.FloatProperty(repeated=True)
    close  = ndb.FloatProperty(repeated=True)
    volume = ndb.FloatProperty(repeated=True)

然后我检索多个实体以使用技术指标检查循环:

import numpy

listOfStocks = ndb.get_multi(list_of_keys)
for stock in listOfStocks:
  doIndicatorCheck(numpy.array(stock.close))

我想查询股票,进行指标检查,然后 return 尽快将结果提供给用户。我应该为此使用 Bigtable 还是 Datastore 可以?如果 Datastore 没问题,这是实现它的理想方式吗?

提前致谢。

如您所知,Datastore implemented using Bigtable. So you can expect them to perform similarly. In term of use case suitability, Datastore, which is going to be replaced by the Firestore 即将推出,更适合存储用户或用户会话相关数据。最重要的是。此外,明确建议将 Bigtable 用于财务相关的工作负载。

有一个页面专门用于选择您可以使用的最多 this page 作为指南。

披露:我是 Cloud Bigtable 的产品经理。

如果您计划拥有覆盖整个股票市场的大量财务数据,Cloud Bigtable 是一个不错的选择:它可以扩展到 TB 和 PB 级,并且您可以获得对请求的低延迟响应,它已经在金融、风险和反欺诈应用程序中使用,并通过其三维本身支持时间序列。查看 this blog post and video FIS 如何使用 Cloud Bigtable 竞标 SEC CAT 项目。

也就是说,Cloud Bigtable 在单个集群中是强一致的,但如果您使用复制,则最终是一致的,所以您必须牢记这一点。如果您的用户期望高度一致,您的选择是:

  • 使用单个集群实例(仅在单个区域内复制)
  • 如果您使用跨区域复制,请通过 application profiles
  • 将请求路由到单个集群
  • 考虑使用提供强一致性的不同系统

Firestore 将为您的应用程序提供具有强一致性的无服务器文档数据库,因此如果这对您的用例很重要,您应该考虑使用 Firestore。

如果您希望能够 运行 SQL 查询您的数据,请考虑:

希望对您有所帮助!