获得徽章 0
#青训营 x 字节后端训练营#
Index是Parquet文件的索引块,主要为了支持“谓词下推”(Predicate Pushdown)功能。谓词下推是一种优化查询性能的技术,简单地来说就是把查询条件发给存储层,让存储层可以做初步的过滤,把肯定不满足查询条件的数据排除掉,从而减少数据的读取和传输量。举个例子,对于csv文件,因为不支持谓词下推,Spark只能把整个文件的数据全部读出来以后,再用where条件对数据进行过滤。而如果是Parquet文件,因为自带Max-Min索引,Spark就可以根据每个Page的max和min值,选择是否要跳过这个Page,不用读取这部分数据,也就减少了IO的开销。
目前Parquet的索引有两种,一种是Max-Min统计信息,一种是BloomFilter。其中Max-Min索引是对每个Page都记录它所含数据的最大值和最小值,这样某个Page是否不满足查询条件就可以通过这个Page的max和min值来判断。BloomFilter索引则是对Max-Min索引的补充,针对value比较稀疏,max-min范围比较大的列,用Max-Min索引的效果就不太好,BloomFilter可以克服这一点,同时也可以用于单条数据的查询。
Index是Parquet文件的索引块,主要为了支持“谓词下推”(Predicate Pushdown)功能。谓词下推是一种优化查询性能的技术,简单地来说就是把查询条件发给存储层,让存储层可以做初步的过滤,把肯定不满足查询条件的数据排除掉,从而减少数据的读取和传输量。举个例子,对于csv文件,因为不支持谓词下推,Spark只能把整个文件的数据全部读出来以后,再用where条件对数据进行过滤。而如果是Parquet文件,因为自带Max-Min索引,Spark就可以根据每个Page的max和min值,选择是否要跳过这个Page,不用读取这部分数据,也就减少了IO的开销。
目前Parquet的索引有两种,一种是Max-Min统计信息,一种是BloomFilter。其中Max-Min索引是对每个Page都记录它所含数据的最大值和最小值,这样某个Page是否不满足查询条件就可以通过这个Page的max和min值来判断。BloomFilter索引则是对Max-Min索引的补充,针对value比较稀疏,max-min范围比较大的列,用Max-Min索引的效果就不太好,BloomFilter可以克服这一点,同时也可以用于单条数据的查询。
展开
评论
点赞
#青训营 x 字节后端训练营#
除了性能、可靠性和扩展性等技术上的优势,BMQ还有一些可以提高开发和维护效率的特性。
首先,BMQ提供了相对简单的API,易于使用和部署,常见的编程语言都有相应的BMQ客户端库,方便开发者在自己的应用程序中使用。
其次,BMQ支持许多高级特性,如消息过期、分区队列、延迟队列等,而且这些特性都可以通过简单的配置进行自定义。这些特性可以帮助开发者更加轻松地实现各种需求,提高业务应用程序的扩展性和灵活性。
另外,BMQ提供了可视化的控制台,方便开发者管理和监控所有的队列和消息,可以快速地定位问题,并进行相应的调整和优化。
最后,BMQ为应用程序提供多种数据类型的支持,其中包括字符串、整型、浮点型以及结构化的数据类型。BMQ的这些特性可以大大降低应用开发的复杂度,帮助开发人员更加专注于业务逻辑的开发和实现。
总而言之,BMQ提供了高性能、高可靠和高扩展性的特性,以及方便的API和工具,这使得开发人员更容易开发出高效可靠的应用程序,并能保证业务流程的高效执行。在分布式系统、大数据处理以及实时消息传递等场景下,BMQ是一种值得信赖的消息队列系统。
除了性能、可靠性和扩展性等技术上的优势,BMQ还有一些可以提高开发和维护效率的特性。
首先,BMQ提供了相对简单的API,易于使用和部署,常见的编程语言都有相应的BMQ客户端库,方便开发者在自己的应用程序中使用。
其次,BMQ支持许多高级特性,如消息过期、分区队列、延迟队列等,而且这些特性都可以通过简单的配置进行自定义。这些特性可以帮助开发者更加轻松地实现各种需求,提高业务应用程序的扩展性和灵活性。
另外,BMQ提供了可视化的控制台,方便开发者管理和监控所有的队列和消息,可以快速地定位问题,并进行相应的调整和优化。
最后,BMQ为应用程序提供多种数据类型的支持,其中包括字符串、整型、浮点型以及结构化的数据类型。BMQ的这些特性可以大大降低应用开发的复杂度,帮助开发人员更加专注于业务逻辑的开发和实现。
总而言之,BMQ提供了高性能、高可靠和高扩展性的特性,以及方便的API和工具,这使得开发人员更容易开发出高效可靠的应用程序,并能保证业务流程的高效执行。在分布式系统、大数据处理以及实时消息传递等场景下,BMQ是一种值得信赖的消息队列系统。
展开
评论
点赞
#青训营 x 字节后端训练营#
目前主流的 MQ 主要是 RocketMQ、kafka、RabbitMQ,其主要优势有:
支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,RabbitMQ 和 Kafka 不支持)
支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
支持 18 个级别的延迟消息(Kafka 不支持)
支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 需要手动确认)
支持 Consumer 端 Tag 过滤,减少不必要的网络传输(即过滤由MQ完成,而不是由消费者完成。RabbitMQ 和 Kafka 不支持)
支持重复消费(RabbitMQ 不支持,Kafka 支持)
目前主流的 MQ 主要是 RocketMQ、kafka、RabbitMQ,其主要优势有:
支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,RabbitMQ 和 Kafka 不支持)
支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
支持 18 个级别的延迟消息(Kafka 不支持)
支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 需要手动确认)
支持 Consumer 端 Tag 过滤,减少不必要的网络传输(即过滤由MQ完成,而不是由消费者完成。RabbitMQ 和 Kafka 不支持)
支持重复消费(RabbitMQ 不支持,Kafka 支持)
展开
评论
点赞
#青训营 x 字节后端训练营#
Presto 优缺点
优点:
Presto基于内存运算,减少了硬盘IO,计算更快。
能够连接多个数据源,跨数据源连表查,如从Hive查询大量网站访问记录,然后从Mysql中匹配出设备信息。
缺点:
Presto能够处理PB级别的海量数据分析,但Presto并不是把PB级数据都放在内存中计算的。而是根据场景,如Count,AVG等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢。
Presto 优缺点
优点:
Presto基于内存运算,减少了硬盘IO,计算更快。
能够连接多个数据源,跨数据源连表查,如从Hive查询大量网站访问记录,然后从Mysql中匹配出设备信息。
缺点:
Presto能够处理PB级别的海量数据分析,但Presto并不是把PB级数据都放在内存中计算的。而是根据场景,如Count,AVG等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢。
展开
评论
点赞
#青训营 x 字节后端训练营#
pdqsort 是 Pattern-defeating quicksort 的缩写,是一种新型的排序算法,将随机快速排序的快速平均情况与堆排序的最坏情况快速组合在一起,同时在具有特定模式的输入上实现了线性时间。pdqsort 是 David Mussers introsort 的扩展和改进。
总的来说,quicksort 的性能关键点在于选定 pivot,选择 pivot 的好坏直接决定了排序的速度,如果每次 pivot 都被选定为真正的 median(中位数),此时快排的效率是最高的。因此 pivot 的选择重点在于寻找 array 真正的 median,目前所有的 pivot 选择方案都是在寻找一个近似的 median。
pdqsort 是 Pattern-defeating quicksort 的缩写,是一种新型的排序算法,将随机快速排序的快速平均情况与堆排序的最坏情况快速组合在一起,同时在具有特定模式的输入上实现了线性时间。pdqsort 是 David Mussers introsort 的扩展和改进。
总的来说,quicksort 的性能关键点在于选定 pivot,选择 pivot 的好坏直接决定了排序的速度,如果每次 pivot 都被选定为真正的 median(中位数),此时快排的效率是最高的。因此 pivot 的选择重点在于寻找 array 真正的 median,目前所有的 pivot 选择方案都是在寻找一个近似的 median。
展开
评论
点赞
#青训营 x 字节后端训练营#
存储系统和数据库系统是两个不同的概念。
存储系统是用于存储数据的硬件和软件系统。它的主要目的是提供大容量的存储空间,以便用户能够保存大量的数据。存储系统可以是本地的,也可以是远程的。
数据库系统是一种用于组织,存储和管理数据的软件系统。它使用特定的数据模型和语言来存储数据,并提供各种工具和接口,使用户能够查询和管理数据。数据库系统通常在存储系统之上运行,使用存储系统提供的空间来存储数据。
因此,存储系统和数据库系统之间的区别在于,前者是用于存储数据的硬件和软件系统,而后者是用于组织,存储和管理数据的软件系统。
存储系统和数据库系统是两个不同的概念。
存储系统是用于存储数据的硬件和软件系统。它的主要目的是提供大容量的存储空间,以便用户能够保存大量的数据。存储系统可以是本地的,也可以是远程的。
数据库系统是一种用于组织,存储和管理数据的软件系统。它使用特定的数据模型和语言来存储数据,并提供各种工具和接口,使用户能够查询和管理数据。数据库系统通常在存储系统之上运行,使用存储系统提供的空间来存储数据。
因此,存储系统和数据库系统之间的区别在于,前者是用于存储数据的硬件和软件系统,而后者是用于组织,存储和管理数据的软件系统。
展开
评论
点赞
#青训营 x 字节后端训练营#
实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发.
作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。
目前GIT已经可以在windows下使用。
实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发.
作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。
目前GIT已经可以在windows下使用。
展开
评论
点赞
#青训营 x 字节后端训练营#
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
展开
评论
点赞
#青训营 x 字节后端训练营#
首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。
评论
点赞
#青训营 x 字节后端训练营#
RDBMS代表关系数据库管理系统。所有现代数据库管理系统(例如SQL, SQL Server, My-SQL等)都基于RDBMS。RDBMS数据库使用表来存储数据。表是相关数据条目的集合, 并且包含用于存储数据的行和列。
大多数现代商业和开源数据库应用程序本质上是相关的。最重要的关系数据库功能包括在维护和实施某些数据关系的同时使用表进行数据存储的能力。
RDBMS代表关系数据库管理系统。所有现代数据库管理系统(例如SQL, SQL Server, My-SQL等)都基于RDBMS。RDBMS数据库使用表来存储数据。表是相关数据条目的集合, 并且包含用于存储数据的行和列。
大多数现代商业和开源数据库应用程序本质上是相关的。最重要的关系数据库功能包括在维护和实施某些数据关系的同时使用表进行数据存储的能力。
展开
评论
点赞