使用 SingleStore 作为时间序列数据库
摘要
SingleStore 是一个非常通用的数据库系统。它基于关系型技术,支持多模型功能,如键值、JSON、全文搜索、地理空间和时间序列。
本文将使用Kaggle的历史 S&P 500 股票数据来探索 SingleStore 对时间序列数据的支持。我们还将构建一个快速仪表板,使用 Streamlit 可视化烛台图。
本文中使用的 SQL 脚本、Python 代码和笔记本文件可在GitHub 上获得,支持 DBC、HTML 和 iPython 格式。
介绍
自关系数据库技术出现以来,许多管理数据的新需求应运而生。马丁·福勒(Martin Fowler) 等知名人士提出了混合持久化(Polyglot Persistence)作为管理各种数据和数据处理需求的一种解决方案,如图 1 所示。
然而,混合持久化是有代价的,并招致了非议,比如:
在一篇经常被引用的混合持久化帖子中,马丁·福勒为一家虚构的零售商绘制了一个 Web 应用程序,该应用程序使用 Riak、Neo4j、MongoDB、Cassandra和一个 RDBMS 来处理不同的数据集。不难想象,他的零售商的 DevOps 工程师会一个接一个地辞职。
—斯蒂芬·皮门特尔(Stephen Pimentel)
此外:
我过去曾看到,如果你尝试采用其中的六种[技术],你至少需要 18 名员工来操作存储端——就是说,六种存储技术。那样是不可扩展的,而且成本太高。
—大卫·麦克罗里( Dave McCrory)
近年来,也有一些使用微服务来实现混合持久化架构的建议。但是,SingleStore 可以通过在单个多模型数据库系统中支持不同的数据类型和处理需求来提供更简单的解决方案。这带来了许多好处,例如更低的 TCO(总拥有成本)、开发人员学习多种产品的负担更少、没有集成的麻烦等等。我们将在一系列文章中更详细地讨论 SingleStore 的多模型功能,现在则从时间序列数据开始。
首先,我们需要在 SingleStore 网站上创建一个免费托管服务帐户,并在 Databricks 网站上创建一个免费社区版(CE)帐户。 在撰写本文时,SingleStore 的托管服务帐户附带 500 美元的积分,这对于本文中描述的案例研究来说绰绰有余。对于 Databricks CE,我们不要注册试用版而是注册免费帐户。在之前的文章中,我们指出 Spark 非常适合使用 SingleStore 进行 ETL,所以这也是此处使用 Spark的原因。
如果你没有 Kaggle 帐户,请创建一个并下载all_stocks_5yr.csv文件。 Kaggle 网站声明该文件大小为 29.58 MB。数据集由以下字段组成:
- date:从2013年2月8日到2018年2月7日的五年每日期间。没有缺失值。
- open:开盘价。11个缺失值。
- high:高价。8个缺失值。
- low:低价。8个缺失值。
- close:收盘价。没有缺失值。
- volume:成交量。没有缺失值。
- name:交易代码。505个值。没有缺失值。
在开始阶段,我们会用到date、close和name信息。
配置 Databricks CE
上一篇文章给出了有关如何配置 Databricks CE以及和 SingleStore 一起使用的详细说明,我们可以在这个用例中使用它们。
上传 CSV 文件
要使用CSV文件,我们需要将其上传到 Databricks CE 环境。上一篇文章提供了有关如何上传CSV文件的详细说明,我们可以在这个用例中使用它们。
创建数据库表
在我们的SingleStore托管服务帐户中,使用 SQL 编辑器新建一个timeseries_db数据库。如下所示:
SQL:
CREATE DATABASE IF NOT EXISTS timeseries_db;
- 1.
- 2.
相关文章