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

时间:2018-09-07 07:11:03

标签: python pandas numpy google-cloud-datastore google-cloud-bigtable

我正在创建一个库存分析Web应用程序。我想存储多只股票的财务数据。然后,我要对它们使用股票筛选器。此筛选器涉及从后端检索多个库存并对其进行技术指标测试。通过指标测试的股票将退还给用户。假设我要存储一个pandas.dataframe作为例如Stock:

          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))

我想查询股票,进行指标检查,然后将结果尽快返回给用户。我应该为此使用Bigtable还是Datastore可以?如果数据存储良好,这是否是理想的方法?

谢谢。

2 个答案:

答案 0 :(得分:3)

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

如果您打算拥有覆盖整个股票市场的大量财务数据,则Cloud Bigtable是一个不错的选择:它可以扩展到TB和PB,并且您可以得到对请求的低延迟响应,它已经在金融,风险和反欺诈应用中使用,并通过其三维维度原生支持时间序列。有关FIS如何使用Cloud Bigtable竞标SEC CAT项目的信息,请参见this blog postvideo

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

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

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

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

希望这会有所帮助!

答案 1 :(得分:1)

您知道,数据存储区implemented使用的是Bigtable。因此,您可以期望它们的性能类似。在用例适用性方面,即将replaced by the Firestore的数据存储区更适合存储与用户或用户会话相关的数据。最重要的是。此外,明确建议将Bigtable用于与财务相关的工作负载。

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