时序数据库简介——InfluxDB、TimescaleDB和QuestDB基于特定的业务需求和用例,从关系型数据库衍生出了大量新的数据库。从内存键值存储到图形数据库,从地理空间数据库到时间序列数据库。所有这些不同类型的数据库都有特定用途,其中使用关系数据库的一般解决方案不是很有效。虽然有许多不同类型的数据库,但在这里我们将研究时间序列数据库——处理时间序列数据所需的数据库。由时间间隔内连续测量某物组成的数据是时间序列数据。随着金融交易的现代化和物联网的出现,对时间序列数据库的需求显而易见。股票和加密货币的价格每秒都在变化。为了衡量这些不断变化的数据并对这些数据进行分析,我们需要一种有效的方法来存储和检索数据。随着物联网设备在我们生活中的前所未有的渗透,物联网设备产生的数据每天都在增加。无论是汽车诊断、房屋温度读数,还是流浪狗的GPS定位,物联网设备无处不在。物联网设备只能做一件事,一件事。信息由设备上的传感器捕获并发送到服务器进行存储。由于现有的通信协议对于这种轻量级的高频数据、流式数据来说过于复杂,因此开发了MQTT来解决物联网的消息传递。时间序列数据可以分为两种类型——规则(通常基于测量)和不规则(通常基于事件)。但时间序列数据不仅仅局限于物联网,它还渗透到整个互联网。捕捉搜索引擎查询、主题标签、社交媒体帖子的病毒式传播等趋势也可以生成时间序列数据。它并没有就此结束。在软件驱动的世界中,安全性和合规性的记录和审计至关重要。所有这些数据也都可以归类为时间序列数据。时间序列数据库是专门为处理从上述一个或多个来源捕获、存储和分析时间序列数据而产生的问题而设计的。因此,为简单起见,我们将时间序列数据定义为:大容量(来自测量的连续数据)自然按时间排序(时间是一个基本维度)作为整个数据集(比单个记录)更有价值有了这些信息,时间-系列数据库应该能够存储大量数据,并具有大规模记录扫描、数据分析和数据生命周期管理的能力。如前所述,传统的事务数据库虽然对存储、检索和处理时间序列数据很有用,但并未充分利用可用资源。具体问题需要具体的解决方案。现在,随着公司意识到这一事实,他们开始使用专门的数据库来解决特定问题。这可以追溯到我开始这篇文章所谈论的内容。在所有其他数据库中,时间序列数据库在过去两年中的采用率更高(截至2020年12月的数据)。时间序列数据库使用量增加约2.5倍,这主要是由于云和数据技术的融合以及从较早捕获的位置捕获数据的能力,即汽车引擎、冰箱、数十亿设备位置数据等等。除了新的资源,公司也意识到一些旧的资源毕竟不适合事务数据库。所有这些都促成了时间序列数据库的广泛采用。时序数据库有了时序数据库,让我们看看如果您想尝试时序数据库,您有哪些不同的选择。可以在DB-engines网站上找到时间序列数据库的完整列表。我将谈论其中的三个。时间序列数据库作为时间序列的PostgreSQL销售,它很快就会引起您的注意。默认情况下,PostgreSQL是对任何事物的赞美。借助超表和块等新架构,TimescaleDB在插入性能上提升了15倍以上,在查询性能上有显着提升。在这里阅读更多相关信息。虽然没有主要的云提供商像大多数其他时间序列数据库一样在云中为TimescaleDB提供完全集成的解决方案,但TimescaleDB可以在所有这些数据库上无缝运行。例如,如果您的基础设施在AWS中并且您不想在TimescaleCloud中运行您的TimescaleDB实例,您可以使用EC2实例安装官方TimescaleDBAMI,或者您可以使用AWSElasticKubernetesServices和官方Helmchart.InfluxDB与TimescaleDB不同,TimescaleDB的灵感来自PostgreSQL(一种关系数据库),后者是一种从头开始编写的NoSQL时间序列数据库。虽然TimescaleDB具有站在广泛接受和推崇的关系数据库肩膀上的优势,但InfluxDB走了一条不同的道路。InfluxDB是时间序列数据库中的领导者,但根据TimescaleDB的研究,它在很多方面都无法击败TimescaleDB。如果您想阅读有趣的文章,并想亲眼看看系统上安装的这两个数据库,请转到OleksanderBausk今天在他的博客上发布的这个有趣的比较。话虽如此,InfluxDB有很多功能。除了查询语言InfluxQL和Flux之外,InfluxDB还开发了一种干净、轻量级、基于文本的协议,用于将点写入数据库。值得赞扬的是,其他时间序列数据库(例如QuestDB)已经采用了这种方法。与TimescaleDB一样,InfluxDB提供开箱即用的云解决方案,但您仍然可以决定在其中一个云平台上运行InfluxDB。例如,如果您在AWS上运行它,您将获得对CloudWatch指标、Grafana、RDS、Kinesis等的原生支持。总而言之,这是一个非常好的数据库。由于这是一个相当新的事物,因此很难说它将与基于关系的时间序列数据库竞争。QuestDBQuestDB是时间序列数据库列表中的最新成员,它是最新一批的YCombinator之一。QuestDB的一些关键区别是列式存储、低内存占用、在时间序列上使用关系模型以及可扩展的无模式摄取。与大多数时间序列数据库一样,QuestDB还使用官方AMI和KubernetesHelmCharts在AWS上提供云部署选项。QuestDB还使用InfluxDB线路协议进行接收,而不必担心随着数据结构的变化而改变架构。作为一个列式数据库,QuestDB无缝处理新列的创建,因此支持无模式获取。尽管在起步阶段,QuestDB几乎完全支持ANSISQL并添加了一些SQL方言,但它创建了许多完全独特的功能,使其成为一个可行的替代方案,也许比市场上的其他一些主要数据库更有效。好的。结束语虽然还有其他几个数据库,但我现在只讨论这三个数据库。从公开的数据中可以明显看出,正在向时间序列数据库过渡。越来越多的公司将开始使用时间序列数据库作为其数据库堆栈的一部分,不一定会取代关系数据库,但会增加其数据功能。这就是为什么今年不仅对时间序列数据库而且对市场上出现的所有其他专业数据库都特别令人兴奋。原文链接:https://towardsdatascience.com/the-case-for-using-timeseries-databases-c060a8afe727
