时间序列数据库才是未来

Posted by Zeusro on April 2, 2020
👈🏻 Select language

首先,我们先理清一个概念:

关系型数据库是非关系数据库的真子集,非关系数据库是时间序列数据库的真子集。

关系型数据库

image

关系型数据库是这样定义的:

采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。

关系型数据库的集大成者是 MySQL 。关系型数据库的问题在于强调“关系”。但实际上,对象之间的关系是弱关系。强关系只是一种特例

举个例子。我们定义三个对象:小明,小红和小王。小明和小红是同居的情侣,小王住在他们隔壁。有一天,小明回到家看到小红和小王呆在同一个房间里。这时小明会有什么想法呢?

他到底应该说小王和小红在过家家呢,还是认同他们的解释,认为小王是在给房间里换电灯泡呢?

这个关系的问题,其实就是关系型数据库的最大问题——乱搞关系。在现在很多开发设计规范里面,已经把关系型数据库当做一个数据存储的仓库(堆表),禁止存储过程,也禁止了外键。可以说,这是历史发展的必然结果。

非关系型数据库

那么,非关系型数据库,自然就是 NoSQL 。

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。

其中有以 Redis 为代表的 key-value 数据库,也有以 MongoDB 为代表的文档型数据库。

image

Redis 是基于内存的(虽然也可以持久化到硬盘),内存是相当珍贵的资源。资源的有限限制了资源的广泛使用。

image

MongoDB 其实有点像 Excel ,在 Excel 文件里面,每一行可以有任意个单元格。

比如,新亘结衣在 MongoDB 中的“爱好”和“配偶”不是空(Null),而是压根就没有这个字段。

姓名 性别 电话 爱好 偶像 特长
王蟑螂 +8617051026064 吃耙耙 新亘结衣  
新亘结衣 +8113766621544     唱歌

如果说 Redis 的问题在于内存过于珍贵,那么我觉得非关系型数据库的问题在于描述的对象“不够自然”。

时间序列数据库

image

“不够自然”的意思,就是缺少“时间”这个属性。实际上,时间才是数据的第一属性。任何数据如果没有时间这个属性,那么都变得毫无意义。所以很多表在设计的时候,从规范层面就是这样说的:要有创建时间这个属性

除此以外,时间序列数据库应该满足这样一个特征:不可变性(Immutable) 。不可变性是指数据录入之后不可变更。数据库的业务靠实时数据流引擎去处理。

时间序列数据库,才是最切合现实世界的模型。举个最简单的例子:我要用小拳拳捶你胸口。我们先简化一下这个动作,然后再录入到时序数据库里面吧 ~

“小拳拳捶你胸口”,最简化的模型就是,描述一个点在三维空间里面“线段”(因为移动的距离有限,所以叫线段)运动到另外一个点。

在三维空间里面,求两点之间的距离,其实跟在一维空间求两点的距离,没啥差别,泛化勾股定理就行了。我会这样说,勾股定理,是升高维度的“梯子”。

有这样的认识,在时序数据库里面,定义数据非常之自然而简单。还是以这个问题为例,解决这个问题,只需要隔一段采集数据,并录入即可。

时间 X Y Z
2020-04-01 09:35:00 1 1 1
2020-04-01 09:35:01 2 2 2
2020-04-01 09:35:02 3 3 3
2020-04-01 09:35:03 3 3 3

监控分析

image

杭州迪火科技监控平台负责人董兵林是这样说的:“(阿里云)TSDB 帮助我们解决了指标数据存储的问题,其表现出的极佳性能,零运维成本,数据永久存储,专门的技术支持,都是我们一直使用的原因。目前我们可以很方便的查看实时指标信息和回溯历史的指标信息,及时发现问题,为进一步的决策提供依据,TSDB 是我们不可缺少的一部分。”

趋势分析

趋势分析,是用来预测未来的一种概率。比如,在上面的数据中,用三维直角坐标系建模,就会得到一条线性趋势线。我们可以预测2020-04-01 09:35:04,我的小拳拳大概率会落于(4,4,4)这个坐标点。

溯源分析

溯源分析跟趋势分析是相反的,是时间倒序的另外一种数据结构。

时间 X Y Z
2020-04-01 09:35:03 3 3 3
2020-04-01 09:35:02 3 3 3
2020-04-01 09:35:01 2 2 2
2020-04-01 09:35:00 1 1 1

在这个问题中,我们建立一条线性趋势线之后,可以用溯源推理分析出2020-04-01 09:34:59我的拳头大概率位于 (0,0,0) 。

也就是说,这是用来预测“过去”的一种概率。溯源分析可以用于刑侦破案,历史遗留问题溯因等场景。

现在的时间序列化数据库,每一行的记录还是比较结构化的。而且,被大量应用于监控领域,这其实是一种误解。 广义的时间序列数据库,每一行数据支持任意属性。

结论

我相信在未来,时序数据库将超越关系型数据库和非关系型数据库,成为应用开发的首选方案

参考链接

  1. 关系型数据库
  2. NoSQL
  3. 散点图是什么?有什么用?
  4. 时间序列数据库 TSDB

First, let’s clarify a concept:

Relational databases are a proper subset of non-relational databases, and non-relational databases are a proper subset of time-series databases.

Relational Databases

image

Relational databases are defined as:

Databases that use a relational model to organize data, storing data in rows and columns for user understanding. This series of rows and columns in relational databases is called tables, and a group of tables forms a database.

The pinnacle of relational databases is MySQL. The problem with relational databases lies in emphasizing “relationships.” But actually, relationships between objects are weak relationships. Strong relationships are just a special case.

For example. Let’s define three objects: Xiao Ming, Xiao Hong, and Xiao Wang. Xiao Ming and Xiao Hong are cohabiting lovers, and Xiao Wang lives next door. One day, Xiao Ming comes home and sees Xiao Hong and Xiao Wang in the same room. What would Xiao Ming think?

Should he say Xiao Wang and Xiao Hong are playing house, or accept their explanation that Xiao Wang is changing a light bulb in the room?

This relationship problem is actually the biggest problem with relational databases—messing with relationships. In many current development design standards, relational databases have been treated as a data storage warehouse (heap tables), prohibiting stored procedures and foreign keys. It can be said this is an inevitable result of historical development.

Non-Relational Databases

So, non-relational databases are naturally NoSQL.

NoSQL, generally referring to non-relational databases. With the rise of internet web2.0 websites, traditional relational databases have shown inadequacy in handling web2.0 websites, especially ultra-large-scale and high-concurrency SNS-type web2.0 purely dynamic websites, with many insurmountable problems. Non-relational databases have developed very rapidly due to their own characteristics. NoSQL databases emerged to solve the challenges brought by large-scale data collections with multiple data types, especially big data application problems.

Among them are key-value databases represented by Redis, and document databases represented by MongoDB.

image

Redis is memory-based (though it can also persist to disk), and memory is a quite precious resource. The limitation of resources restricts the widespread use of resources.

image

MongoDB is actually a bit like Excel. In Excel files, each row can have any number of cells.

For example, Yui Aragaki’s “hobbies” and “spouse” in MongoDB are not null, but simply don’t have these fields at all.

姓名 性别 电话 爱好 偶像 特长
王蟑螂 +8617051026064 吃耙耙 新亘结衣  
新亘结衣 +8113766621544     唱歌

If Redis’s problem is that memory is too precious, then I think the problem with non-relational databases is that the objects they describe are “not natural enough.”

Time-Series Databases

image

“Not natural enough” means lacking the “time” attribute. Actually, time is the first attribute of data. Any data without the time attribute becomes meaningless. So many tables in design specifications say this at the specification level: must have a creation time attribute.

Besides, time-series databases should satisfy this characteristic: Immutability. Immutability means data cannot be changed after entry. Database business is handled by real-time data stream engines.

Time-series databases are the model that best fits the real world. Take the simplest example: I want to hit your chest with little fists. Let’s simplify this action first, then enter it into a time-series database~

“Little fists hitting your chest,” the most simplified model is describing a point moving from one point to another in three-dimensional space as a “line segment” (because the movement distance is limited, it’s called a line segment).

In three-dimensional space, finding the distance between two points is actually no different from finding the distance between two points in one-dimensional space—just generalize the Pythagorean theorem. I would say the Pythagorean theorem is the “ladder” for raising dimensions.

With this understanding, defining data in time-series databases is very natural and simple. Still using this problem as an example, solving this problem only requires collecting data at intervals and entering it.

时间 X Y Z
2020-04-01 09:35:00 1 1 1
2020-04-01 09:35:01 2 2 2
2020-04-01 09:35:02 3 3 3
2020-04-01 09:35:03 3 3 3

Monitoring Analysis

image

Dong Binglin, head of Hangzhou Dihuo Technology’s monitoring platform, said this: “(Alibaba Cloud) TSDB helped us solve the problem of metric data storage. Its excellent performance, zero operational costs, permanent data storage, and dedicated technical support are all reasons we continue to use it. Currently, we can easily view real-time metric information and trace back historical metric information, discover problems in time, and provide basis for further decisions. TSDB is an indispensable part for us.”

Trend Analysis

Trend analysis is used to predict the future probabilistically. For example, in the data above, modeling with a three-dimensional Cartesian coordinate system yields a linear trend line. We can predict that at 2020-04-01 09:35:04, my little fists will most likely land at coordinate point (4, 4, 4).

Traceability Analysis

Traceability analysis is the opposite of trend analysis—it’s another data structure in reverse chronological order.

时间 X Y Z
2020-04-01 09:35:03 3 3 3
2020-04-01 09:35:02 3 3 3
2020-04-01 09:35:01 2 2 2
2020-04-01 09:35:00 1 1 1

In this problem, after establishing a linear trend line, we can use traceability reasoning to analyze that at 2020-04-01 09:34:59, my fist was most likely at (0,0,0).

That is to say, this is used to predict the “past” probabilistically. Traceability analysis can be used in scenarios like criminal investigation, tracing causes of historical issues, etc.

Current time-series databases still have relatively structured records per row. And they’re widely applied in the monitoring field, which is actually a misunderstanding. Generalized time-series databases support arbitrary attributes per row of data.

Conclusion

I believe that in the future, time-series databases will surpass relational and non-relational databases to become the preferred solution for application development.

References

  1. Relational Databases
  2. NoSQL
  3. What are Scatter Plots? What are they used for?
  4. Time-Series Database TSDB

Сначала давайте уточним концепцию:

Реляционные базы данных являются собственным подмножеством нереляционных баз данных, а нереляционные базы данных являются собственным подмножеством баз данных временных рядов.

Реляционные базы данных

image

Реляционные базы данных определяются как:

Базы данных, использующие реляционную модель для организации данных, хранящие данные в строках и столбцах для понимания пользователем. Эта серия строк и столбцов в реляционных базах данных называется таблицами, а группа таблиц образует базу данных.

Вершиной реляционных баз данных является MySQL. Проблема реляционных баз данных заключается в акценте на “отношениях”. Но на самом деле, отношения между объектами являются слабыми отношениями. Сильные отношения — это всего лишь особый случай.

Например. Давайте определим три объекта: Сяо Мин, Сяо Хун и Сяо Ван. Сяо Мин и Сяо Хун — сожительствующие любовники, а Сяо Ван живёт по соседству. Однажды Сяо Мин приходит домой и видит Сяо Хун и Сяо Вана в одной комнате. Что подумает Сяо Мин?

Должен ли он сказать, что Сяо Ван и Сяо Хун играют в дом, или принять их объяснение, что Сяо Ван меняет лампочку в комнате?

Эта проблема отношений — это на самом деле самая большая проблема реляционных баз данных—путаница с отношениями. Во многих текущих стандартах проектирования разработки реляционные базы данных были обработаны как склад хранения данных (кучи таблиц), запрещая хранимые процедуры и внешние ключи. Можно сказать, что это неизбежный результат исторического развития.

Нереляционные базы данных

Итак, нереляционные базы данных, естественно, это NoSQL.

NoSQL, в общем, относящийся к нереляционным базам данных. С подъёмом интернет-сайтов web2.0 традиционные реляционные базы данных показали неадекватность в обработке сайтов web2.0, особенно ультра-крупномасштабных и высококонкурентных SNS-типа чисто динамических сайтов web2.0, с множеством непреодолимых проблем. Нереляционные базы данных развивались очень быстро благодаря своим характеристикам. Базы данных NoSQL появились для решения проблем, вызванных крупномасштабными коллекциями данных с множественными типами данных, особенно проблемами приложений больших данных.

Среди них есть базы данных ключ-значение, представленные Redis, и документные базы данных, представленные MongoDB.

image

Redis основан на памяти (хотя может также сохраняться на диск), а память — довольно ценный ресурс. Ограничение ресурсов ограничивает широкое использование ресурсов.

image

MongoDB на самом деле немного похож на Excel. В файлах Excel каждая строка может иметь любое количество ячеек.

Например, “хобби” и “супруг” Юи Арагаки в MongoDB не null, а просто вообще не имеют этих полей.

姓名 性别 电话 爱好 偶像 特长
王蟑螂 +8617051026064 吃耙耙 新亘结衣  
新亘结衣 +8113766621544     唱歌

Если проблема Redis в том, что память слишком ценна, то я думаю, что проблема нереляционных баз данных в том, что объекты, которые они описывают, “недостаточно естественны”.

Базы данных временных рядов

image

“Недостаточно естественно” означает отсутствие атрибута “время”. На самом деле, время — это первый атрибут данных. Любые данные без атрибута времени становятся бессмысленными. Поэтому многие таблицы в спецификациях проектирования говорят об этом на уровне спецификации: должен быть атрибут времени создания.

Кроме того, базы данных временных рядов должны удовлетворять этой характеристике: Неизменяемость. Неизменяемость означает, что данные не могут быть изменены после ввода. Бизнес базы данных обрабатывается движками потоков данных в реальном времени.

Базы данных временных рядов — это модель, которая лучше всего подходит реальному миру. Возьмём простейший пример: я хочу ударить вас по груди маленькими кулачками. Давайте сначала упростим это действие, а затем введём его в базу данных временных рядов~

“Маленькие кулачки бьют по груди,” самая упрощённая модель — это описание точки, движущейся от одной точки к другой в трёхмерном пространстве как “линейный сегмент” (потому что расстояние движения ограничено, это называется линейным сегментом).

В трёхмерном пространстве нахождение расстояния между двумя точками на самом деле ничем не отличается от нахождения расстояния между двумя точками в одномерном пространстве—просто обобщите теорему Пифагора. Я бы сказал, что теорема Пифагора — это “лестница” для повышения размерности.

С этим пониманием определение данных в базах данных временных рядов очень естественно и просто. Всё ещё используя эту проблему в качестве примера, решение этой проблемы требует только сбора данных с интервалами и ввода их.

时间 X Y Z
2020-04-01 09:35:00 1 1 1
2020-04-01 09:35:01 2 2 2
2020-04-01 09:35:02 3 3 3
2020-04-01 09:35:03 3 3 3

Анализ мониторинга

image

Дун Бинлинь, руководитель платформы мониторинга Hangzhou Dihuo Technology, сказал это: “(Alibaba Cloud) TSDB помог нам решить проблему хранения данных метрик. Его отличная производительность, нулевые операционные затраты, постоянное хранение данных и выделенная техническая поддержка — все причины, по которым мы продолжаем использовать его. В настоящее время мы можем легко просматривать информацию о метриках в реальном времени и отслеживать историческую информацию о метриках, своевременно обнаруживать проблемы и предоставлять основу для дальнейших решений. TSDB — незаменимая часть для нас.”

Анализ трендов

Анализ трендов используется для вероятностного прогнозирования будущего. Например, в данных выше, моделирование с трёхмерной декартовой системой координат даёт линейную линию тренда. Мы можем предсказать, что в 2020-04-01 09:35:04 мои маленькие кулачки, скорее всего, приземлятся в координатной точке (4, 4, 4).

Анализ прослеживаемости

Анализ прослеживаемости противоположен анализу трендов—это другая структура данных в обратном хронологическом порядке.

时间 X Y Z
2020-04-01 09:35:03 3 3 3
2020-04-01 09:35:02 3 3 3
2020-04-01 09:35:01 2 2 2
2020-04-01 09:35:00 1 1 1

В этой проблеме, после установления линейной линии тренда, мы можем использовать рассуждения о прослеживаемости, чтобы проанализировать, что в 2020-04-01 09:34:59 мой кулак, скорее всего, был в (0,0,0).

То есть, это используется для вероятностного прогнозирования “прошлого”. Анализ прослеживаемости может использоваться в сценариях, таких как уголовное расследование, отслеживание причин исторических проблем и т.д.

Текущие базы данных временных рядов всё ещё имеют относительно структурированные записи в каждой строке. И они широко применяются в области мониторинга, что на самом деле является недоразумением. Обобщённые базы данных временных рядов поддерживают произвольные атрибуты в каждой строке данных.

Заключение

Я верю, что в будущем базы данных временных рядов превзойдут реляционные и нереляционные базы данных, чтобы стать предпочтительным решением для разработки приложений.

Ссылки

  1. Реляционные базы данных
  2. NoSQL
  3. Что такое диаграммы рассеяния? Для чего они используются?
  4. База данных временных рядов TSDB


💬 讨论 / Discussion

对这篇文章有想法?欢迎在 GitHub 上发起讨论。
Have thoughts on this post? Start a discussion on GitHub.

在 GitHub 参与讨论 / Discuss on GitHub