问题描述
目前我正在处理时间序列数据(Tickers)并以 .h5
和 .parquet
格式存储 Pandas 数据框。我的工作量基本上是查询数据列和写入新数据列。
当文件增加和分散时它开始失控,所以我正在考虑使用数据库。我看到了一些 Nosql 数据库,如 Cassandra 和 HBase。
这些数据库通常强调它们是distributed
或elastic
数据库。 但我只有一台物理机器(一台 3990x 64 核线程撕裂器)。
所以我的问题基本上分为两部分:
-
如果我在单个节点上运行这些
distributed
数据库,性能如何?就我的工作负载而言,它们的性能仍会优于 MysqL 等传统数据库吗? -
我可以使用虚拟化来构建集群吗?比如说,使用 ESXI 来虚拟化多个节点?它们会胜过单节点设置吗?
解决方法
没有
您将花费大量时间和精力试图弄清楚在没有必要时如何使用“分布式”。
从数据库开始
CREATE TABLE stocks (
ticker_id MEDIUMINT UNSIGNED NOT NULL,date DATE NOT NULL,open,close,volume,etc
PRIMARY KEY(ticker_id,date),INDEX(date)
) ENGINE=InnoDB;
CREATE TABLE tickers (
ticker_id MEDIUMINT UNSIGNED AUTO_INCREMENT NOT NULL,ticker VARCHAR(33) CHARACTER SET ascii NOT NULL,PRIMARY KEY(ticker_id),INDEX(ticker)
) ENGINE=InnoDB;
即使只有很少的内核,这对于单个服务器上的十亿行数据来说已经足够了。
在您有几百万行后返回 SELECTs
。我们可以讨论后续步骤以使其正常运行。