余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

重新定义数据库历史时刻

xiyangw 2023-05-13 15:47 13 浏览 0 评论

Apache Kafka卡夫卡是无可争议的游戏改变者。它是真正数据库分水岭技术。

MySQL数据库目前很流行数据库,在2000-2010年蓬勃发展,由于其巨大的人气,MySQL帮助刺激了2008-2009年的NoSQL的崛起。数据库历史到了一个新的时刻:传统的关系数据库技术终于被完全崭新的一代所取代。

NoSQL如今解释为“Not only SQL”而不是排斥SQL。现在要回答的问题是:需要有新一代的数据存储的必要吗?或许老的关系数据库改善一下就能消灭下一代数据技术呢?

我强烈认为,答案是否定的。一些趋势表明数据库技术正在出现的历史性转变。

新一代通用数据库

关系数据库和SQL都是痛苦的。SQL这种语言会导致很多问题。它掩盖了无意义的逻辑,如三值真理( tri-valued truth),它会造成非常微妙的bug和性能的灾难。

至少,SQL实际上是开发者的疼痛,当编写一个程序时,你有这么好的严格类型的语言与各种编译器保证,但是在编码中间却插入无意义的SQL字符串,语法检查却不编译检查这些SQL语句。这是绑定到一个不可知的程序API或程序的数据源,并可能会导致毫无预警的改变。

这些都展示了需要重要改进的机会。可以想象采取一些明智的步骤:找到一个办法,编程和数据库都使用相同的语言和工具;设计一个数据库查询语言,类似于一种编程语言;内存映射数据库直接进入程序等等。

MongoDB,Redis,Riak以一种有意义的方式获得生存机会。Riak似乎已经靠边站,MongoDB和Redis则会更强。Cassandra和Neo4j都是非主流。MongoDB和Redis则是无处不在的。

为什么?看他们解决问题方式有助于我们明白原因。Redis是重新开始用一个简单的基础概念:标识数据块,然后你可以使用这个标识标签来获取和处理数据。数据可以是丰富结构的方式,这对程序员会很熟悉。

MongoDB也开始用一个简单的概念,本质上是数据库存储嵌套的、结构化的“文件”,可以直接映射到数据结构或编程语言的对象。而在这上面,MongoDB增加了另一个电动工具:你使用查询数据库的编程语言是无处不在的JavaScript,可以说是当今最流行的和灵活的编程语言。所以你不必“sharding分片”你的应用程序。

时间序列数据库

另一个不同的新兴范畴是时间序列数据库。这些数据库存储的是带有时间戳的事实,将时间作为数据模型的原生和本质的部分。他们允许你做时间分析。不仅如此,他们真的认为时态查询为中心。他们中的许多人甚至对时间查询没有任何强制性的限制。

InfluxDB有一个非常陡峭的增长轨迹,它定义了面向时间的数据库。

另一种是ElasticSearch,在一定程度上提供了时间序列的功能,但不能作为唯一的中央概念。这是一个知道时间的分布式搜索引擎。这很自然地引出了一个问题:如果你想使用一个知道时间的非时间序列数据库,为什么使用搜索引擎?为什么不是具有时间序列的功能的关系型数据库?

时间会告诉我们最后生存者,个人敢打赌InfluxDB会赢,有一点是肯定的:时间序列是很重要的,足够作为数据库的第一等公民。

流式数据库

数据技术最终会走向面向流的、pub-sub、队列的这一类,这些数据库基本上存储日志数据,并不是永久性存储状态数据,这些状态虽然能让你直接获取和改变,新的日志数据概念是只插入以不变的方式存储,然后再通过阅读一遍获取(可能多次,可能删除检索)。

你为什么要这样?第一眼看不出原因,“这是类似河流的数据,企业从中获取的一切都是可以喝的”,这种架构是非常强大和非常善良,大大简化复杂事情。

典型的企业数据架构很快会变成了一场噩梦的意大利面。数据流通过用奇特方式,使用队列或流数据库,能够解决很多问题,如性能问题、可靠性问题。

很多技术如Spark 正在围绕这些领域发展。但在我看来,Apache Kafka是无可争议的游戏规则制定者。这确实是一个数据库历史的分水岭技术。

重新定义数据库历史时刻

相关推荐

辞旧迎新,新手使用Containerd时的几点须知

相信大家在2020年岁末都被Kubernetes即将抛弃Docker的消息刷屏了。事实上作为接替Docker运行时的Containerd在早在Kubernetes1.7时就能直接与Kubelet集成使...

分布式日志系统ELK+skywalking分布式链路完整搭建流程

开头在分布式系统中,日志跟踪是一件很令程序员头疼的问题,在遇到生产问题时,如果是多节点需要打开多节点服务器去跟踪问题,如果下游也是多节点且调用多个服务,那就更麻烦,再者,如果没有分布式链路,在生产日志...

Linux用户和用户组管理

1、用户账户概述-AAA介绍AAA指的是Authentication、Authorization、Accounting,即认证、授权和审计。?认证:验证用户是否可以获得权限,是3A的第一步,即验证身份...

linux查看最后N条日志

其实很简单,只需要用到tail这个命令tail-100catalina.out输入以上命令,就能列出catalina.out的最后100行。...

解决linux系统日志时间错误的问题

今天发现一台虚拟机下的系统日志:/var/log/messages,文件时间戳不对,跟正常时间差了12个小时。按网上说的执行了servicersyslogrestart重启syslog服务,还是不...

全程软件测试(六十二):软件测试工作如何运用Linux—读书笔记

从事过软件测试的小伙们就会明白会使用Linux是多么重要的一件事,工作时需要用到,面试时会被问到,简历中需要写到。对于软件测试人员来说,不需要你多么熟练使用Linux所有命令,也不需要你对Linux...

Linux运维之为Nginx添加错误日志(error_log)配置

Nginx错误日志信息介绍配置记录Nginx的错误信息是调试Nginx服务的重要手段,属于核心功能模块(nginx_core_module)的参数,该参数名字为error_log,可以放在不同的虚机主...

Linux使用swatchdog实时监控日志文件的变化

1.前言本教程主要讲解在Linux系统中如何使用swatchdog实时监控日志文件的变化。swatchdog(SimpleWATCHDOG)是一个简单的Perl脚本,用于监视类Unix系统(比如...

syslog服务详解

背景:需求来自于一个客户想将服务器的日志转发到自己的日志服务器上,所以希望我们能提供这个转发的功能,同时还要满足syslog协议。1什么是syslog服务1.1syslog标准协议如下图这里的fa...

linux日志文件的管理、备份及日志服务器的搭建

日志文件存放目录:/var/log[root@xinglog]#cd/var/log[root@xinglog]#lsmessages:系统日志secure:登录日志———————————...

运维之日志管理简介

日志简介在运维过程中,日志是必不可少的东西,通过日志可以快速发现问题所在。日志分类日志分类,对不同的日志进行不同维度的分析。操作系统日志操作系统是基础,应用都是在其之上;操作系统日志的分析,可以反馈出...

Apache Log4j 爆核弹级漏洞,Spring Boot 默认日志框架就能完美躲过

这两天沸沸扬扬的Log4j2漏洞门事件炒得热火朝天:突发!ApacheLog4j2报核弹级漏洞。。赶紧修复!!|Java技术栈|Java|SpringBoot|Spring...

Linux服务器存在大量log日志,如何快速定位错误?

来源:blog.csdn.net/nan1996jiang/articlep/details/109550303针对大量log日志快速定位错误地方tail/head简单命令使用:附加针对大量log日志...

Linux中查看日志文件的正确姿势,求你别tail走天下了!

作为一个后端开发工程师,在Linux中查看查看文件内容是基本操作了。尤其是通常要分析日志文件排查问题,那么我们应该如何正确打开日志文件呢?对于我这种小菜鸡来说,第一反应就是cat,tail,vi(或...

分享几款常用的付费日志系统,献给迷茫的你!

概述在前一篇文章中,我们分享了几款免费的日志服务器。他们各有各的特点,但是大家有不同的需求,有时免费的服务器不能满足大家的需要,下面推荐几款付费的日志服务器。1.Nagios日志服务器Nagio...

取消回复欢迎 发表评论: