• [问题求助] 【MRS产品】【hetu配置数据源功能】hetu是否能配置hive的内置元数据库数据源
    【功能模块】hetu需要配置内置的hive元数据作为数据源,请问是否支持?是添加为gaussdb数据源吗?或者hive内置元数据库怎么连接呢【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [知识分享] 一文读懂数仓中的pg_stat
    【摘要】 GaussDB(DWS)在SQL执行过程中,会记录表增删改查相关的运行时统计信息,并在事务提交或回滚后记录到共享的内存中。这些信息可以通过 “pg_stat_all_tables视图” 查询,也可以通过下面函数进行查询。pg_stat_get_tuples_inserted --表累积insert条数pg_stat_get_tuples_updated --表累积update条数p...本文分享自华为云社区《一文读懂pgstat》,作者: leapdb 。GaussDB(DWS)在SQL执行过程中,会记录表增删改查相关的运行时统计信息,并在事务提交或回滚后记录到共享的内存中。这些信息可以通过 “pg_stat_all_tables视图” 查询,也可以通过下面函数进行查询。pg_stat_get_tuples_inserted --表累积insert条数 pg_stat_get_tuples_updated --表累积update条数 pg_stat_get_tuples_deleted --表累积delete条数 pg_stat_get_tuples_changed --表自上次analyze以来,修改的条数 pg_stat_get_last_analyze_time --查询最近一次analyze时间因此,根据共享内存中 "表自上次analyze以来修改过的条数" 是否超过一定阈值,就可以判定是否需要做analyze了。1. 事务中如何记录统计信息每个session有一个PgStat_TableStatus内存结构,当前事务访问过的每个表占用一个。其中包含每一层子事务的统计信息,用结构体PgStat_TableXactStatus描述。这里记录了当前子事务增删改查的各种信息。pg_stat_get_xact_numscans --当前事务在当前表上,启动顺序扫描的次数 pg_stat_get_xact_tuples_returned --当前事务在当前表上,顺序扫描抓取的可见元组条数。 pg_stat_get_xact_tuples_fetched --当前事务在当前表上,抓取的可见元组条数。 pg_stat_get_xact_tuples_inserted --当前事务在当前表上,插入条数 pg_stat_get_xact_tuples_deleted --当前事务在当前表上,删除条数 pg_stat_get_xact_tuples_updated --当前事务在当前表上,更新条数 pg_stat_get_xact_tuples_hot_updated --当前事务在当前表上,HOT更新条数 pg_stat_get_xact_blocks_fetched --当前事务在当前表上,选中的页面数 pg_stat_get_xact_blocks_hit --当前事务在当前表上,扫描过的页面数 pg_stat_get_xact_function_calls --当前事务在当前函数上,调用次数 pg_stat_get_xact_function_total_time --当前事务在当前函数上,所有调用的总执行时间 pg_stat_get_xact_function_self_time --当前事务在当前函数上,上次调用一次的执行时间 pg_stat_get_xact_partition_tuples_inserted --当前事务在当前表分区上,插入条数 pg_stat_get_xact_partition_tuples_deleted --当前事务在当前表分区上,删除条数 pg_stat_get_xact_partition_tuples_updated --当前事务在当前表分区上,更新条数 pg_stat_get_xact_partition_tuples_hot_updated --当前事务在当前表分区上,HOT更新条数事务提交时会把当前表,所有子事务中的信息汇总,并转储到pgstat中。2. 事务外如何记录统计信息事务提交时将事务中的执行信息通过UDP报文发送给PgCollector后台线程,由其记录到统一的内存中,并在集群正常停止时转储到物理文件pg_stat_tmp/pgstat.stat中。实例级信息,PgStat_GlobalStats库级信息,PgStat_StatDBEntry表级信息,其内存结构PgStat_StatTabEntry--实例级信息 pg_stat_get_bgwriter_timed_checkpoints --后台写进程开启定时检查点的次数 pg_stat_get_bgwriter_requested_checkpoints --后台写进程开启基于后端请求的检查点的次数 pg_stat_get_checkpoint_write_time --最近一次checkpoint写页面的时间 pg_stat_get_checkpoint_sync_time --最近一次checkpoint同步页面的时间 pg_stat_get_bgwriter_buf_written_checkpoints --在检查点期间后台写进程写入的缓冲区数目。 pg_stat_get_bgwriter_buf_written_clean --为日常清理脏块,后台写进程写入的缓冲区数目。 pg_stat_get_bgwriter_maxwritten_clean --后台写进程停止清理扫描的时间,因为已经写入了更多的缓冲区(相比bgwriter_lru_maxpages参数声明的缓冲区数)。 pg_stat_get_buf_written_backend --后端进程写入的缓冲区数,因为它们需要分配一个新的缓冲区。 pg_stat_get_buf_fsync_backend --后台进程执行fsync的次数 pg_stat_get_buf_alloc --分配的总缓冲区数。 pg_stat_get_bgwriter_stat_reset_time --后台bgwriter线程的重置时间 --当前CN记录的库级信息 pg_stat_get_db_xact_commit --当前实例上指定数据库中已提交事务的数量。 pg_stat_get_db_xact_rollback --当前实例上指定数据库中回滚事务的数量。 pg_stat_get_db_blocks_fetched --当前实例上指定数据库中磁盘块抓取请求的数量。 pg_stat_get_db_blocks_hit --当前实例上指定数据库在缓冲区中找到的请求磁盘块的数量。 pg_stat_get_db_tuples_returned --当前实例上指定数据库返回的元祖数量。 pg_stat_get_db_tuples_fetched --当前实例上指定数据库中读取的元组数量。 pg_stat_get_db_tuples_inserted --当前实例上指定数据库中插入的元组数量。 pg_stat_get_db_tuples_updated --当前实例上指定数据库中更新的元组数量。 pg_stat_get_db_tuples_deleted --当前实例上指定数据库中删除的元组数量。 pg_stat_get_db_conflict_all --当前实例上指定数据库中发生冲突恢复的次数。 pg_stat_get_db_conflict_lock --集群中所有CN和DN上指定数据库锁冲突的总数。在DN上执行该函数,返回当前实例上指定数据库中锁冲突数量。 pg_stat_get_db_deadlocks --当前实例上指定数据库中死锁的数量。 pg_stat_get_db_temp_files --当前实例上指定数据库中创建临时文件的个数。 pg_stat_get_db_temp_bytes --当前实例上指定数据库中创建临时文件的字节数。 pg_stat_get_db_blk_read_time --当前实例上指定数据库中读数据块所用的时间。 pg_stat_get_db_blk_write_time --当前实例上指定数据库中写数据块所用的时间。 --整个集群记录的库级信息 pg_stat_get_db_total_xact_commit --在CN上执行该函数,返回集群中所有CN上指定数据库中已提交事务的总数。在DN上执行该函数,返回当前实例上指定数据库中已提交事务的数量。 pg_stat_get_db_total_xact_rollback --在CN上执行该函数,返回集群中所有CN上指定数据库中回滚事务的总数。在DN上执行该函数,返回当前实例上指定数据库中回滚事务的数量。 pg_stat_get_db_total_blocks_fetched --在CN上执行该函数,返回集群中所有DN上指定数据库中磁盘块抓取请求的总数。在DN上执行该函数,返回当前实例上指定数据库中磁盘块抓取请求的数量。 pg_stat_get_db_total_blocks_hit --在CN上执行该函数,返回集群中所有DN上指定数据库在缓冲区中找到的请求磁盘块的总数。在DN上执行该函数,返回当前实例上指定数据库在缓冲区中找到的请求磁盘块的数量。 pg_stat_get_db_total_tuples_returned --在CN上执行该函数,返回集群中所有DN上指定数据库返回的元组总数。在DN上执行该函数,返回当前实例上指定数据库返回的元组数量。 pg_stat_get_db_total_tuples_fetched --在CN上执行该函数,返回集群中所有DN上指定数据库读取的元组总数。在DN上执行该函数,返回当前实例上指定数据库读取的元组数量。 pg_stat_get_db_total_tuples_inserted --在CN上执行该函数,返回集群中所有DN上指定数据库插入的元组总数。在DN上执行该函数,返回当前实例上指定数据库插入的元组数量。 pg_stat_get_db_total_tuples_updated --在CN上执行该函数,返回集群中所有DN上指定数据库更新的元组总数。在DN上执行该函数,返回当前实例上指定数据库更新的元组数量。 pg_stat_get_db_total_tuples_deleted --在CN上执行该函数,返回集群中所有DN上指定数据库删除的元组总数。在DN上执行该函数,返回当前实例上指定数据库删除的元组数量。 pg_stat_get_db_total_conflict_all --在CN上执行该函数,返回集群中所有CN和DN上指定数据库发生冲突恢复的总次数。在DN上执行该函数,返回当前实例上指定数据库中发生冲突恢复的次数。 pg_stat_get_db_total_temp_files --在CN上执行该函数,返回集群中所有DN上指定数据库中创建临时文件的总个数。在DN上执行该函数,返回当前实例上指定数据库中创建临时文件的个数。 pg_stat_get_db_total_temp_bytes --在CN上执行该函数,返回集群中所有DN上指定数据库中创建临时文件的总字节数。在DN上执行该函数,返回当前实例上指定数据库中创建临时文件的字节数。 pg_stat_get_db_total_deadlocks --集群中所有CN和DN上指定数据库死锁的总数。在DN上执行该函数,返回当前实例上指定数据库中死锁的数量。 pg_stat_get_db_total_blk_read_time --在CN上执行该函数,返回集群中所有DN上指定数据库中读数据块所用的总时间。在DN上执行该函数,返回当前实例上指定数据库中读数据块所用的时间。 pg_stat_get_db_total_blk_write_time --在CN上执行该函数,返回集群中所有DN上指定数据库中写数据块所用的总时间。在DN上执行该函数,返回当前实例上指定数据库中写数据块所用的时间。 --表级信息 pg_stat_get_numscans --当前表上,启动顺序扫描的次数 pg_stat_get_tuples_returned --当前表上,顺序扫描抓取的可见元组条数。 pg_stat_get_tuples_fetched --当前表上,抓取的可见元组条数。 pg_stat_get_tuples_inserted --当前表上,插入条数 pg_stat_get_tuples_deleted --当前表上,删除条数 pg_stat_get_tuples_updated --当前表上,更新条数 pg_stat_get_tuples_hot_updated --当前表上,HOT更新条数 pg_stat_get_blocks_fetched --当前表上,选中的页面数 pg_stat_get_blocks_hit --当前表上,扫描过的页面数 pg_stat_get_function_calls --当前函数上,调用次数 pg_stat_get_function_total_time --当前函数上,所有调用的总执行时间 pg_stat_get_function_self_time --当前函数上,上次调用一次的执行时间 pg_stat_get_partition_tuples_inserted --当前表分区上,插入条数 pg_stat_get_partition_tuples_deleted --当前表分区上,删除条数 pg_stat_get_partition_tuples_updated --当前表分区上,更新条数 pg_stat_get_partition_tuples_hot_updated --当前表分区上,HOT更新条数 pg_stat_get_tuples_changed --当前表上自上一次analyze的历史累积变化量 pg_stat_get_partition_tuples_changed --当前表分区上自上一次analyze的历史累积变化量 pg_stat_get_partition_live_tuples --当前表分区上可见元组数 pg_stat_get_partition_dead_tuples --当前表分区上删除元组数 pg_stat_get_live_tuples --当前表上可见元组数 pg_stat_get_last_vacuum_time --当前表上最近一次vacuum的时间 pg_stat_get_last_data_changed_time --当前表上最近一次数据修改时间 pg_stat_get_last_autovacuum_time --当前表上最近一次autovacuum时间 pg_stat_get_last_autoanalyze_time --当前表上最近一次autoanalyze时间 pg_stat_get_last_analyze_time --当前表上最近一次手动analyze时间 --local表示当前节点的信息 pg_stat_get_local_tuples_updated pg_stat_get_local_tuples_inserted pg_stat_get_local_tuples_hot_updated pg_stat_get_local_tuples_deleted pg_stat_get_local_tuples_changed pg_stat_get_local_live_tuples pg_stat_get_local_last_autovacuum_time pg_stat_get_local_last_autoanalyze_time pg_stat_get_local_dead_tuples pg_stat_get_local_autovacuum_count pg_stat_get_local_autoanalyze_count pg_stat_get_local_analyze_status函数信息,PgStat_StatFuncEntrypg_stat_get_function_calls --函数已被调用次数。 pg_stat_get_function_total_time --该函数花费的总挂钟时间,以微秒为单位。包括花费在此函数调用上的时间。 pg_stat_get_function_self_time --在当前事务中仅花费在此函数上的时间。不包括花费在调用函数上的时间。3. 单节点的统计信息每个CN和DN节点,各自记录自己的统计信息。可以通过上面的函数分别查看。另外,CN在增删改的SQL执行结束时,将各个DN的返回条数信息记录到CN自己的pgstat结构中,构成了全局的统计信息。4. 集群全局的统计信息各个CN各自维护自己的pgstat信息,因此若想知道集群全局的,还需要向所有CN查询并汇总。5. 统计信息的生命周期pgstat中的统计信息属于运行时信息,这些信息处于事务外,不严格保证数据一致性。在数据库异常停止时会清空所有数据,正常停止会保留数据。6. 统计信息的维护这些信息在执行SQL时被自动记录,不需要人工进行维护。
  • [知识分享] HiEngine:可媲美本地的云原生内存数据库引擎
    【摘要】 《HiEngine: How to Architect a Cloud-Native Memory-Optimized Database Engine》是由华为云数据库创新Lab独家一作发表在数据库领域顶级会议SIGMOD'2022的工业论文。本文分享自华为云社区《SIGMOD’22 HiEngine论文解读》,作者:云数据库创新Lab 。导读华为云数据库创新Lab在论文《HiEngine: How to Architect a Cloud-Native Memory-Optimized Database Engine》中提出了华为自研的、以内存为中心的云原生内存数据库引擎HiEngine。SIGMOD会议是由美国计算机协会(ACM)数据管理专业委员会组织的、数据库领域的最顶级国际学术会议。HiEngine是云数据库创新LAB在云原生内存数据库领域取得的关键技术成果之一。摘要高性能内存数据库引擎已成为许多系统和应用程序中必不可少的基本构件,然而大多数现有系统是基于本地内存存储设计的,并不能充分发挥云计算环境的优势。现有的云原生数据库系统大多遵循以外存存储为中心的设计。HiEngine的关键特性包括:1) 除了采用存算分离架构外,在计算侧利用云基础设施的可靠性内存服务来实现快速持久性和可靠性;2) 实现跟主内存数据库引擎同等的性能;3) 向后兼容现有的云原生数据库系统。HiEngine与华为GaussDB (for MySQL)集成,将内存数据库引擎的优势带到云端,并与基于磁盘的引擎共存。HiEngine的性能比传统的以存储为中心的解决方案高出7.5倍。研究背景1. Memory-centric计算架构以内存为中心的计算已经成为学术界和工业界的研究热点。持久性内存提供了DRAM级的性能和闪存级的容量,基于持久性内存的池式内存的研究和应用已经逐渐成为探索的新方向。学术界研究原型系统有HydraDB、RAM Cloud、NAM-DB、Hotpot、DDC及Infiniswap,工业界系统如FaRM、SAP HANA、SRSS SCM、WSCs及DAOS等。同时,内存数据库的客户将应用程序迁移到云,供应商提供云原生的内存优化的OLTP解决方案成为一种趋势。2. OLTP数据库生态现有的云本地数据库系统大多是磁盘数据库,遵循以存储为中心的设计,如Aurora、PolarDB、GaussDB(for MySQL)等。它们有以下特点:基于页面的IO、面向页面的布局和缓冲池。此外,它们有内存中数据库所没有的缓冲池,这直接影响了云平台中如何构建引擎和充分利用内存设备的硬件性能。当前,大多数内存数据库都是基于本地部署解决方案设计的,不能直接在云中工作。尽管部分存算分离的内存数据库(如NAM-DB)可以提供云原生特性,但它们在整个网络上的访问延迟很大。3. 华为云基础设施华为云存储基础设施服务具有如下特点:硬件趋势和挑战:1)存算分离架构中引入持久内存,尤其在计算侧配置持久内存能够提供高速的事务日志缓存等功能,但是这与计算节点的Stateless特性相违背。2)基于ARM的多核处理器具有更好的性价比和理想的能耗,但是也带来Cross-NUMA的多核扩展挑战。SRSS作为华为云新一代分布式存储服务,它使用RDMA建立在现代SSD/NVM硬件之上 ,采用日志结构型的追加存储。SRSS在云中提供了必要的持久性内存原语。SRSS支持内存语义和计算端持久存储,定制化的MMAP内核API支持从本地或远程持久存储层一致性的读取数据,SRSS通过内存映射提供除了打开、关闭、追加、读取等接口外,还提供内存语义操作。数据在计算侧和存储侧三副本存储,采用低延迟存储网络。这允许计算节点可以在计算侧本地持久化和存储侧远端持久化,似的存储层之间关键路径上没有网络开销。HiEngine架构本文提出了一种云原生的内存优化的内存数据库引擎HiEngine来解决这些挑战。HiEngine在架构上呈现的特征包括:1)将持久化状态引入到计算层,以支持快速持久化和低延迟事务。2)日志即数据。3)在计算层SRSS利用持久内存在三个计算节点中同步存储副本日志,同时异步持久化到远端存储。4)系统有三层物理结构和三层逻辑结构,其中逻辑的日志层与计算层位于同一物理位置。1. 以日志为中心的Log-centric MVCC存储引擎概览HiEngine围绕“日志就是数据库”的理念构建,并使用了一些关键技术如无锁索引、MVCC事务模型、元组级内存布局。它使用SRSS实现数据持久化和快速恢复。HiEngine通过Rowmap实现数据访问,它是HiEngine的核心数据结构,支持MVCC、高效的检查点和并行恢复。2. Tuple-level内存布局HiEngine使用MVCC事务模型,这充分挖掘了SRSS的性能和功能特性。在内存布局层面,它采用lock-free的ARTree索引、使用Row Map来映射行ID到具体的数据版本。Tuple-level内存布局特性包括:1)一个版本包含许多关键字段,如[tmin, tmax, nextver, loffset…]字段;2)Index的叶节点是一个行ID;3)二级索引的键由用户自定义键和当前行ID组成;4)对版本链采用基于Epoch的空间管理机制和基于Session管控的Non-blocking的垃圾回收策略。3. 事务模型HiEngine提供快照隔离级别。当事务开始时,它被分配一个读CSN和一个全局唯一的TID,并在提交时将TMIN和TMAX字段中的TID替换为CSN。HiEngine提出了两种时间戳授权方法。逻辑时钟的时间戳分配时延为40微秒,而全局时钟在无原子时钟下时延为20微秒。在分布式数据库中,Global Clock是高性能时间戳授时和性能高扩展的最佳选择。4. PIA/RowMapHiEngine以日志的形式组织数据记录,没有“页面”的概念。PIA将版本行记录ID映射到记录地址。PIA有以下好处:行更新操作不会改变索引的内部结构二级索引的“键”=“用户自定义键+ RID”检查点变得轻量级,因为只需要持久化PIA而不是真实数据恢复只会重新构建PIA,而不是读取元组版本5. 高可靠高扩展的Redo-Only LoggingHiEngine中,WAL有两个目的:持久化保证和数据副本。WAL被同步持久化到计算侧近端SRSS SCM池中,然后异步的分发到存储端的SRSS PLOG。SRSS通过PLOG提供了一个仅追加的抽象和段结构。HiEngine在计算端使用分布式日志记录,一旦事务的日志记录持久化到计算端持久化内存中,事务就会被提交。日志被批处理并异步刷新到存储层。PLOG在物理结构上,按段组织。每个线程维护一个打开的PLOG,段按需动态分配和释放。每个段由PLOG ID和PLOG中的偏移量来标识。HiEngine采用分布式logging:追加写和基于MMAP读更新后的版本包含一条记录的完整内容使用SRSS的追加接口将日志记录写入段/ PLOG数据成功三副本持久化到计算侧持久性内存后提交事务6. Dataless的检查点和并行恢复为了加速恢复,HiEngine在后台运行检查点。检查点变得非常轻量化,只需要持久化PIA。恢复分为加载阶段和重放阶段: 1)一旦PIA设置完成,恢复就完成了;2)之后的访问将根据需要通过MMAP将数据版本带入主存。我们还设计了一个并行恢复算法:1). 多个重放线程依次扫描日志(每个线程一个)2). 如果日志记录操作是插入或更新操作,则将相应的PIA条目更新为日志中偏移3). 只有当PIA条目指向旧的记录版本时,重放线程才会用新的记录地址覆盖PIA条目HiEngine定期地执行日志合并来做日志垃圾回收。合并线程获取当前最低读LSN的快照,该快照存储在本地作为truncLSN,用于部分合并。完全合并需要删除表的所有版本和记录,以便将数据聚集到新的存储空间中修复loffset。异步当完成日志合并后,HiEngine将异步修复PIA中的loffset。7. 索引持久化和检查点在HiEngine中,索引树的修改不会立即持久化。索引树的检查点类似于日志结构合并树。不过存在读放大。索引有以下特点:1)1个内存中的主RW树+持久存储的RO森林;2)基于AR-Tree的lock-free索引树;3)通过MMAP读取持久存储的索引;4)森林中的树可以是不同种类 (例如B+ Tree);5)索引合并:将多棵树合并为一棵。部署方式HiEngine提出了两种部署模式:1. 垂直整合:HiEngine与GaussDB中已有的InnoDB引擎共存(针对MySQL),在CREATE TABLE语句中使用WITH ENGINE=HiEngine参数,查询将被路由到相应的存储引擎执行。2. 横向整合。放在数据库表前面作为一个透明的ACID缓存,部分或全部作为表前ACID缓存。本文专注于垂直整合的部署方式,HiEngine与华为GaussDB(for MySQL)集成为单个引擎。系统评测两个引擎共享相同的SQL层,其中HiEngine使用代码生成技术。使用Sysbench和标准TPC-C来比较HiEngine和其他三种工业系统。所有的评价都是在两种环境下进行的,单服务器和云SRSS。HiEngine在两个平台上的表现都明显优于DBMS-M。 HiEngine单服务器性能高达6500万tpmC。编译执行下的端到端性能为> 50%。我们通过设置内存分配策略和工作负载分区来评估面向ARM优化。在所有情况下,HiEngine存储引擎的性能都比DBMS-M高出60%。通过对ARM平台上的TPC-C模型的分析,跨Socket的远程访问每增加10%,性能下降5%。总结HiEngine是一个云原生内存优化的内存数据库引擎。利用现代云基础设施与计算端快速持久性内存,并将主内存数据库引擎的优点带到云端,并与基于磁盘的引擎共存。此外,它提供的性能可与本地内存数据库引擎相媲美。现代云基础设施一直在快速发展,尤其在现代硬件技术的发展中不断升级。新硬件包括多核处理器特别是基于ARM的平台、大容量主内存和持久性SCM、及RDMA网络等。现有的云原生数据库引擎大多是以存储为中心的设计,这让新硬件的潜力在云原生内存数据库里在很大程度上得不到开发,同时云给内存数据库引擎带来了一些独特的挑战。HiEngine提出了一个云原生的内存优化的数据库引擎,它的特性包括:1)将存算分离的高性能内存数据库在云上呈现给用户;2)采用华为的高可靠共享云存储服务,支持以日志为中心的存储和计算侧高性能持久性内存;3)优化基于ARM的多核处理器;4)保持以内存为中心的引擎与以存储为中心的引擎之间的向后兼容性、可以部署为单个引擎或另一个引擎前面的ACID缓存;5)与之前的系统相比,提供高达7倍的性能。HiEngine弥合了学术原型系统和云上生产系统之间的鸿沟。HiEngine是华为云下一代云原生分布式内存数据库的关键引擎。
  • [技术干货] Java线程池多线程查询数据库提高查询效率[转载]
    需求公司数据统计报表查询,几张大表关联查询,包含跨库查询,数据联查,数据过滤,数据统计。问题主表数据1    主表数据2    …    统计数据1    统计数据2    …数据    数据        数据    数据    报表结构是主表数据+统计数据,只查主表数据速度很快,统计数据需要跨库联查,且表数据量大,拖慢了速度。一开始的做法是,每次分页请求都先获取主表list,再foreach主表list,根据主表字段去查询统计数据并进行计算,再合并到主表进行返回,查询速度不理想。分页查响应时间=1次主表查询时间+10次统计数据查询时间思路复杂的报表数据统计不应全部由DB层面去解决,而是SQL仅负责数据过滤,返回统计所需的字段,SQL尽量简单高效,service层拿到DB返回的结果集,由代码层面去进行较为复杂的数据合并与统计。最总给到前端的是一个分页,那么优化的话是基于分页去进行,分页10条,线程池开启10个线程去并行查询,最总汇总返回给前端。分页查响应时间=1次主表查询时间+1次统计数据查询时间(10条中最慢的一条)代码线程池工具类package com.youxue.weliao.utils;import com.google.common.util.concurrent.ThreadFactoryBuilder;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.Future;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;/** * @Author lhy * @Date 2022/5/13 */@Slf4jpublic class ThreadUtil {    private volatile static ThreadUtil threadUtil;    private ThreadPoolExecutor executor;    /**     * 单例     */    private ThreadUtil() {    }    public static ThreadUtil getThreadUtilInstance() {        if (null == threadUtil) {            synchronized (ThreadUtil.class) {                if (null == threadUtil) {                    threadUtil = new ThreadUtil();                }            }        }        return threadUtil;    }    /**     * 提交任务     *     * @param task     */    public Future<?> submit(Runnable task) {        if (executor == null) {            // 初始化线程池            executor = initialize();        }        // 执行线程        return executor.submit(task);    }    /**     * 初始化线程池     *     * @return     */    private synchronized ThreadPoolExecutor initialize() {        ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 0L,            TimeUnit.MILLISECONDS,            new LinkedBlockingQueue<>(1024),            new ThreadFactoryBuilder()                .setNameFormat("task-admin-getlist--%d")                .build(),            new ThreadPoolExecutor.CallerRunsPolicy());        log.info("===================>ThreadUtil线程池初始化");        return executor;    }    /**     * 关闭线程池     */    public void shutdown() {        if (executor != null) {            executor.shutdown();        }    }}service层实际调用,这里我就不把全部业务代码放出来了,简化后如下    @Override    public IPage<ManageDto> getManageDto(IPage<ManageDto> page, String str, String end, List<Integer> taskAdminIds) {        // 主表查询        IPage<ManageDto> manageDtos = baseMapper.getManageDto(page, str, end, taskAdminIds);        if (manageDtos.getTotal() > 0) {            // 主表查询结果集            List<ManageDto> manageDtoList = manageDtos.getRecords();            // 异步线程Future集合            List<Future<?>> futures = new ArrayList<>();            for (ManageDto manageDto : manageDtoList) {                // 本页有几条数据便开启几条线程去进行统计数据查询                futures.add(ThreadUtil.getThreadUtilInstance().submit(() -> {                    // 统计数据查询                    List<ManageVo> manageVos = groupCyberArmyService.getManageVos(manageDto.getProcessAdminUserId(), manageDto.getTaskAdminId());                    // 业务逻辑运算后合并到主表Dto                }))            }            this.waitFinish(futures);            manageDtos.setRecords(manageDtoList);            return manageDtos;        }        return null;    }        /**     * 线程池内线程是否已全部执行结束     *      * @param futures 异步线程Future集合     */    @SneakyThrows    private void waitFinish(List<Future<?>> futures) {        for (Future<?> future : futures) {            future.get();        }    }解析future.get方法线程池线程是异步提交的,但是返回分页结果是需要同步返回,Future的get是个阻塞方法。只有所有的任务全部完成,我们才能用get按照任务的提交顺序依次返回结果,调用future.get()方法查看线程池内所有方法是否已执行完成,达到线程异步提交,结果集同步返回的效果。线程池工具类单例就不多解释了,这里用的是DCL单例,线程池根据自身需求配置核心线程等参数。————————————————版权声明:本文为CSDN博主「幸福往往是摸得透彻」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_43840809/article/details/124767908
  • [技术干货] IDC:2021H2中国关系型数据库软件市场规模同比增长34.9%
    2022年6月21日,IDC发布的《2021年下半年中国关系型数据库软件市场跟踪报告》显示:2021下半年中国关系型数据库软件市场规模为15.8亿美元(105.6亿人民币),同比增长34.9%。其中,公有云关系型数据库规模8.7亿美元,同比增长48.7%;本地部署关系型数据库规模7.1亿美元,同比增长21.1%。IDC预测, 到2026年,中国关系型数据库软件市场规模将达到95.5亿美元,未来5年市场年复合增长率(CAGR)为28.1%。公有云关系型数据库规模8.7亿美元(58.15亿人民币),同比增长48.7%。公有云关系型数据库市场集中度更高,前五名厂商占据接近90%的市场份额。阿里环比减少 2.2% 至 42.5%;收入 24.71 亿; 腾讯增加 2% 至 19.4%;收入 11.28 亿; 亚马逊AWS 减少 0.3% 至 13.3%;收入 7.73 亿; 华为增加 0.6% 至 8%;收入 4.65 亿; 甲骨文减少 0.5 至 3.1%;收入 1.8 亿; 中国电信市场份额 2.6%;收入 1.51 亿; 百度 2.1%;收入 1.22 亿; 微软 2%;收入 1.16 亿。 本地部署关系型数据库规模7.1亿美元(47.45亿人民币),同比增长21.1%。 在本地部署模式市场中,由于利好政策的驱动,本土厂商市场份额都得到迅速扩大,如:在政府行业,达梦数据库、人大金仓在过去一年中获得了大量的订单;华为在政企、金融行业也获得了突破。总体上看,本土厂商的份额正在快速追赶上Oracle、IBM等国际厂商。甲骨文市场份额环比减少 7.4% 至 19.3%;收入 9.16 亿; 华为减少 2.7% 至 12%;收入 5.7 亿; 达梦增加 5.3% 至 11%;收入 5.22 亿; 微软增加 2% 至 9.6%;收入 4.56 亿; SAP 增加 1.6% 至 8.6%;收入 4.08 亿; IBM 减少 0.8% 至 6.4%;收入 3.04 亿; 人大金仓未变,市场份额 5%;收入 2.37 亿; 阿里减少 2.3% 至 3.4%;收入 1.61 亿。 IDC中国企业软件市场分析师王楠表示:在新兴数据库技术层面,中国本土数据库厂商与国际厂商的差距不大,部分领域还处于领先地位,产品性价比更有优势。在宏观层面,政策极大利好本土厂商,本土厂商的市场机会将会高于国际厂商。在数据库技术发展和宏观政策驱动的双重因素影响下,中国关系型数据库市场过去的格局正在被打破,变革即将到来。 信息来源丨IDC、云头条
  • [技术干货] 华为云GaussDB助力“2号人事部”打造高品质HR效率软件
    人才是社会和企业最重要的资产之一。为实现有效管理人才,企业需要一款灵活高效的HR效率软件。“2号人事部”是深圳市点米二号科技有限公司出品的中国第一款即租即用的HR效率软件,为10000家客户、1500万人提供员工管理、招聘管理、考勤打卡、薪酬计算、社保管理等服务,促进企业管理效率提升。华为云GaussDB数据库助力“2号人事部”业务系统性能提升15%  流量洪峰集中,数据读写迎挑战  作为一款由百万HR共创的一体化人力资源数字化平台,2号人事部因为流量洪峰集中,数据体量庞大,在数据峰值读写和规模级数据核算方面面临巨大挑战。  数据峰值读写  常见的考勤打卡业务场景,在考勤集中打卡时段,高峰期峰值高达每秒10万次以上,并发访问压力大,即使通过一系列异构和高性能NoSQL来缓解洪峰对基础数据库的冲击,挑战也十分巨大。  规模级数据核算  在常见的月底考勤核算、薪酬核算的业务场景中,大部分企业会在月底或月初发起整个企业的数据核算,而核算会拉起整个月和整个公司的各大模块的记录数据,进而产生上百万行数据的读写压力。  全新底座,高效管理  基于上述痛点,“2号人事部”对于数据库的需求十分明确,一是具备稳定可靠的数据库服务能力,二是提供简单高效的数据库运维功能。而华为云GaussDB数据库具备高可用、存算分离、高性能、弹性高扩展、简易可持续性运维等特点,能够满足“2号人事部”的各项需求。  华为云通过RDS for MySQL的一写多读特性,让主实例只承担写流量,降低主库压力,承载考勤打卡、月底核算等业务海量读写流量。同时使用华为云云原生数据库GaussDB(for Redis)作为前置缓存,应对考勤峰值的流量高峰。  华为云GaussDB(for Redis)凭借存算分离的云原生架构,实现分钟级计算节点扩容和秒级存储扩容;实现了亚毫秒级时延稳定无抖,轻松应对考勤并发高峰;还提供了三副本容灾方案,可从底层保证数据的一致性,从源头避免“脏数据”的出现,有效协助客户简化上层业务逻辑架构,增强数据的可用性。此外,“2号人事部”HR系统涉及众多公司员工的个人信息,如薪酬、员工档案等敏感信息,对数据服务的安全性要求较高。  华为云数据库提供虚拟私有云、子网、安全组、DDoS防护以及SSL安全访问等多层安全防护体系,实现租户隔离和访问控制以及实例监控、API管理、故障预警、自动备份等智能运维手段,多重守护敏感数据,全方位保证“2号人事部”HR系统的数据安全,让客户使用更安心。  两套“组合拳”助力“2号人事部”数据库系统在吞吐、访问时延、IOPS等指标方面综合提升15%,扩容时间由4小时缩短为5分钟,效率提升47倍,为企业带来更高的资源利用率,使整个平台在资源不变的情况下承载更多的用户。  华为云数据库自动运维平台提供的实时性能监控看板,可以随时应对突发洪峰,一旦发现某个数据库压力呈现不断上升趋势,及时一键扩容,高效支撑海量并发压力,保障业务的稳定运行。  人才是企业的重要资产,高效管理人才是企业成功的重要因素。“2号人事部”全场景数字化平台极大提升了企业组织效率和员工满意度,让人才与企业价值实现共赢。华为云GaussDB数据库愿凭借技术力量,助力万千企业一同推动企业人力资源管理的创新升级,为HR带来工作效能提升和价值重塑。文章来源:http://news.yesky.com/hotnews/325/725999325.shtml
  • [技术干货] 2022大数据十大关键词,重磅发布!
    ​6月28日,为进一步加速推动我国数据智能转型进程,推动“十四五”期间数据智能产业交流与合作,由中国信息通信研究院、中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)主办的2022大数据产业峰会在京召开。在峰会主论坛上,中国信通院云大所所长何宝宏发布了《2022大数据十大关键词》。大数据十大关键词是基于我们长期对于产业的研究观察,以及与一线专家的研讨交流完成。如图所示,本年度十大关键词涉及数据从计算机语言到成为生产要素的全生命周期,包括【数据资源化】,即数据从计算机语言到成为可被人类识别的信息【数据治理】,即将散乱的、庞杂的数据进行归类、整理、管理【数据资产化】,即将数据与货币进行对应挂钩,【数据开发应用】,即加工数据使其为业务赋能,【数据流通】,即完成数据在部门与部门间、机构与机构间进行点对点的合规交换共享,【数据要素市场】,即促进全社会按照统一规范的制度、体系完成数据的合规流通利用,【数据安全】,即保障数据流转的全生命周期符合相关法律法规。关键词1:创新型数据库优化数据资源化过程数据库作为支撑数据存储、计算的核心技术产品,为了适应数据要素相关需求,正快速进行技术革新。一方面AI数据库、Serverless云原生数据库推动对于数据的价值挖掘从“阳春白雪”变为“下里巴人”。利用数据不再是金融、电信等数据密集型行业的特色,而是变成全社会、全行业的普适性行为。这导致数据的加工利用过程需要更加平民化、高效化。AI数据库具备自动运维、智能开发等能力,Serverless云原生数据库具备按量计费、弹性扩容等能力,均可实现数据加工利用过程的降本增效,正成为甲骨文、亚马逊、阿里、华为等巨头供应商的研发热点。另一方面防篡改数据库、全密态数据库支撑数据完成高效确权定价、便捷合规流通。防篡改数据库在高效存储计算基础上,提供数据防篡改和操作防篡改功能,从而支撑数据确权定价,而全密态数据库能够实现数据在加密状态下的高效存储和计算,从而支撑数据合规流通。两者均成为MIT等学术机构的研究热点,以及华为、阿里等供应商的研发热点。关键词2:图计算平台助力大规模图数据资源化图数据与传统行列式数据不同,它通过点、边模型,高效描述实体、属性、关系的数据模型,近年来被广泛用于企业智能营销风控等必要数据应用中。随着行业数据智能转型的深入,图数据在数据总量中的比例也正在快速上升。Gartner预计,到2025年图技术在数据和分析创新中的占比将从2021年的10%上升到80%。随着图数据规模的变大,开启了图数据的“大数据”时代,起源于80年代的传统关系型数据库,以及起源于2000年左右的专用图数据库已经无法支撑大规模图数据的高效存储与计算。图计算平台通过抽象计算层和集成层,在图数据库基础上增强了兼容性和大规模数据计算能力,实现了多种存储介质中图数据的高效汇聚以及多跳情况下的复杂计算能力。目前该领域政策扶持力度不断加大,开源体系发展迅猛,商用产品层出不穷,从而快速支撑了图数据这一重要要素类型的价值释放。关键词3:数据中台成为企业挖掘数据要素价值的核心引擎随着企业数字化转型的加深,数据相关系统、组织逐渐复杂、冗余,壁垒逐渐增多。为在组织或企业内部构建一套可复用的数据和分析能力,减少数据本身及相关技术架构的冗余,打通不同系统数据间的壁垒,数据中台应运而生。其理论体系从发展初期的“百家争鸣”,逐渐聚焦和明确,并在业内达成共识,即数据中台构建了数据资源与业务价值间的骨干网,是“企业数智化转型的核心引擎”。近年来,由于数字化转型政策的持续推动,数据中台发展迅猛,Gartner在成熟度曲线中将其标记为期望值最高。国内该领域供给侧迅速发展、供应商不断丰富,除概念提出者阿里巴巴外,华为、腾讯、网易、星环等大数据企业纷纷入场。应用侧相关落地案例迅速增多,中国移动、中国联通、工商银行、农业银行等大型央企、金融机构以及各地方政府纷纷立项招标,并形成自身实践案例。关键词4:DCMM贯标引领行业数据治理DCMM是我国数据管理领域的首个国家标准,为企业数据管理工作提供客观的评价依据,指导企业体系化构建数据管理框架、持续优化数据管理能力。经过近3年时间的发展,DCMM已得到广泛认可,贯标评估的工作成效正加速显现。在数据要素统一大市场的培育过程中,DCMM贯标评估可以提升各类市场主体的数据能力和数据活力,弥合地区间差异、拉齐行业间水平,扩大数据资源优质供给,从而提高数据要素流通效率,引导数据资源的高效积累和有序聚集。为持续推动企业数据管理能力提高,工信部印发“企业数据管理国家标准贯标工作方案”,全国各地配套产业补贴政策,推动重点地区、重点行业的贯标评估工作,预计到2025年,贯标评估企业超1万家,宣贯培训人员超15万人。关键词5:数据估值成为数据资产化切入点数据估值探索历程伴随着企业数字化转型的发展而发展。Gartner于2015年提出信息价值评价框架,从信息内在价值、信息商业价值、信息绩效价值、信息成本价值、信息市场价值、信息经济价值六大维度进行衡量。但是,这一框架多停留在理念层面,仅明确了主要影响因子,未提出具体的测算指标和方法。中国企业的全面数字化转型大致始于2015年,并在2017年后进入爆发期。企业在意识到数据价值的同时,投入了巨大的人力、物力和财力,因此,亟需一套估值指标清晰量化数据价值,评价数字化转型的成效。自2021年初起,光大银行、南方电网、浦发银行等企业陆续进行数据估值的研究与实践。但是我们也应认识到数据估值仍处于发展初期,估值目的、估值框架有待在具体场景中探索验证。我们在分析业界数据估值的成果后,认为可以将数据产品作为估值对象,而估值实际上是在衡量数据对于业务发展贡献的间接经济价值,以及将数据视为商品进行交易获得的直接经济收益,因此,数据估值是一项涵盖了数据管理、数据应用、数据交易、AI建模的综合性工作。下一步,我们诚邀大家与我们共同探索数据估值的方法,提高数据人员的价值感,为数字化转型指明方向。关键词6:DataOps定义数据开发应用新模式DataOps的概念最早在2014年由国外学者提出,随后业界逐步对其内涵进行补充。其在2018年正式被纳入Gartner的数据管理技术成熟度曲线当中,由此进入了国际的视野当中。2022年中国信通院正式牵头启动了DataOps的标准建设工作,以此为基础推动我国大数据产业的多元化发展。DataOps作为协助企业完成数智化转型的良药,供给侧和需求侧都在争相尝鲜。厂商中,诸如腾讯、阿里、亚信、海南数造等公司纷纷采纳DataOps的理念构建新一代数据研发工具平台。企业中的一些头部机构,例如工商银行、农业银行、中国移动等也在对DataOps进行实践,并取得了不小的成果。在标准化方面,今年信通院牵头联合各行业30余家单位开展标准制定工作。标准包括了7个模块25个环节,旨在推动我国数据文化扎实发展。关键词7:隐私计算一体机助力数据要素流通破局今年是隐私计算落地应用元年,多个场景应用加速落地,隐私计算一体机为应用开辟新路径。一是作为软硬结合一体的专用设备,利用硬件特性增强软件实现方案,其安全加固、性能加速和易用性增强的三大优势,使得隐私计算一体机从众多工程优化方案中脱颖而出,降低用户使用技术门槛和综合成本。二是一体机的技术实现方式不唯一,各家产品百花齐放。可基于可信硬件或加密卡,同时利用计算加速卡或网络加速卡,也可预装应用服务场景组件,组合方案多样化。多硬件多角度组合提升成为软硬结合发展趋势,并在金融政务医疗等场景崭露头角。三是产品形态多样,标准化需求迫切,国内外已有多个标准带头规范技术研发和应用。但也值得注意,并非仅有隐私计算一体机可以突破应用瓶颈,扩大应用规模,面对数据安全流通巨大的需求,我们仍要继续探索更多好用易用的落地方案。关键词8:数据要素政策从宏观到落地今年年初,十四五数字经济规划、要素市场化配置改革方案两份文件对数据要素的专门布局,让数据要素领域的探索再掀热潮,政策推进、产业实践都在不断深入、不断创新。一是顶层设计逐步细化,国家站在全国统一大市场的高度对数据要素发展做出安排,又针对深圳示范区的数据要素市场准入做出具体部署,数据基础制度体系建设也在加快推进。二是地方法规陆续出台,目前已有十九省市公布了相关数据条例,以促进数据利用和产业发展为基本定位,多以公共数据为抓手,结合地方实际和特色进一步激发市场主体活力。三是交易模式不断创新。各地数据交易所优化经营结构,贵阳制定交易规则、上海建设数商体系、深圳打造开源社区等探索让数据交易有了更实在的依托。但是我们离数据要素价值的充分释放还很远,数据权属、定价的共识还未建立,数据泄露、越权滥用等问题加剧人们的不信任感,如何建立有效的规则体系和监管机制,如何利用前沿技术破解难题,仍需政产学研用各界共同发力。关键词9:数据安全合规整体迈入新阶段随着2021年两法的颁布实施,各行各业的数据安全监管力度不断加强,合规工作也迈入新的阶段。首先,为了正确理解监管内容,有效落实监管要求,各行各业广泛掀起了政策法规的学习浪潮。其次,数据分类分级作为数据安全领域的重要工作,也是实现精细化安全管理的必要能力,同样成为这一轮学习热潮的重点关注对象。再次,为推动本行业企业数据安全的贯彻落实,部分行业主管单位启动监管报送工作。最后,在供应侧市场,部分企业开始着手开发合规管理工具,以协助需求方实现监管应对的自动化实现。关键词10:数据分类分级在数据安全治理中率先落地数据分类分级作为数据安全工作的基础内容,是数据安全精细化管理的必要前提,需要在数据安全治理工程中率先落地。凭借在方法论共识、行业细化、工具开发等方面呈现的发展态势,数据分类分级同样上榜十大关键词。首先,分类分级作为《数据安全法》明确提到的概念之一,引起地方、行业、企业的研究探讨,并逐渐形成从建立组织保障到落实对应级别数据安全管控策略的“七步走”方法论共识。其次,为指导企业分类分级工作的推进落实,各行业通过制定标准规范,明确分类分级工作的原则、方法、定义,进一步细化相关要求。最后,自动化分类分级工具或咨询服务在数据安全供方市场蓬勃发展。据中国信通院“可信数安”评估体系统计,2022年分类分级工具或服务的参评企业从2021年的4项增加至14项。以上就是2022大数据领域十个关键词。最后,我们对其进行归纳总结,发现他们涵盖政策、理念、安全、技术等支撑数据要素价值释放的方方面面,这些关键词所涉内容的快速发展,进一步印证了我国数据要素市场在快速发展过程中,已逐步构建起政策引领、理念先行、技术支撑、安全护航的健康发展格局。来源: 数仓宝贝库
  • [技术干货] 新数据库时代,不要只学 Oracle、MySQL
    目前,中国已经进入“人人都是开发者,家家都是数据公司”的新数据库时代。今日,CSDN 创始人&董事长、极客帮创投创始合伙人蒋涛发表了《新数据库时代》主题演讲分享。他指出,在开源吞噬世界的背景下,数据库也在大力拥抱开源。不同于传统关系型数据库,新型数据库已成为行业风口,急需大量相关人才汇入,青年才俊应当抓住机遇,迎接挑战。以下是蒋涛演讲实录:大家好,我是CSDN创始人蒋涛。我是程序员出身,30年前数据库就是程序员的必备技能,而近几年,数据库又有了很大的发展。作为投资人,我也曾投资过巨杉数据库。CSDN目前是中国知名的技术社区,据最新数据显示,CSDN的用户量已经超过3,600万,公司规模也在不断发展壮大。如今,开发者变得越来越重要,我们围绕着开发者建立了一系列业务支持体系,帮助开发者获得能力与成长。其中,不仅有协助开发的工具开发云(https://dev.csdn.net),还有帮助大家找到更好职业的人才云等。目前,开发者市场越来越好,相信“人人都是开发者,家家都是技术公司”的时代不久后就要到来。在此背景下,中国想要构建自己的核心技术生态,数据库是其中关键。今天我将围绕三个部分分享《新数据库时代》:第一是揭示「我们正在进入的数据大时代」现状;第二是了解「开源正在吞噬数据库」的改变;第三是把握「新型的数据库人才特别抢手」的趋势。1、数据大时代我们正处于大数据时代,几乎每家公司都在对自己的业务进行数字化变革。据统计,全球数据量每年持续增加,去年全球产生的数据总量是79ZB,2025年预计将达到180ZB。由于云技术的发展,越来越多的数据都存储在云端。数据显示,在2016年只有10%的数据储存在云端的数据仓库里,但到了2022年,这个数字已经快速增长到了75%,这说明随着数字经济的发展,每家公司都将成为数据公司,数据库市场也迎来了爆炸性增长。数据库市场历史其实非常悠久,从1964年,世界上第一个数据库系统IDS(Integrated Data Storage,集成数据存储)诞生开始,到今天数据库发展已经快60年。1980年代,数据库开始在中国生根发芽。直到现在,整个全球市场依然保持了20%以上的增长规模。尽管数据库是个古老的技术,但其中又蕴含了很多新的机会。从数据库技术公司融资情况来看,数字非常惊人。过去10年,数据库公司融资总额87亿,其中一半是在过去两年内完成的。2021年,超级独角兽大数据公司Databricks两轮融资总额为26亿美元。如此看来,数据库技术也进入到了一个新时代。2、开源吞噬数据库那么数据库的技术进入到新时代的标志是什么?即“开源吞噬数据库”。开源已经成为所有开发者的必选项,据GitHub统计数据:2016年仅有80万人第一次做出开源代码贡献,而2021年,这个数字已经增长到300万。在数据库领域中,开源的“吞噬”情况也十分明显。dbdb.io(卡内基梅隆大学维护的全球数据库信息库)分析了全球知名的841个数据库系统,其中开源数据库有608个,占比72%,只有200多家是商业数据库。在全球顶尖数据库排行榜中,开源数据库也占到一半。在CSDN制作的2021 数据库全景图(V1.0)中,我们将不同领域的数据库按照开源和闭源两类进行颜色区分,右侧浅绿色的部分是开源数据库,左侧深绿色的部分是闭源数据库。可以很明显地看到开源在快速发展,且有吞噬闭源数据库的趋势。中国数据库在发展核心技术生态的大背景下,也发展得非常的迅猛。dbdb.io(卡内基梅隆大学维护的全球数据库信息库)统计的全球800多家数据库企业中,中国有56家,但实际上中国数据库厂商有200多家。尤其在新型数据库上,中国企业“冒头”较多,例如现在发展势头强劲的TiDB,在GitHub上非常活跃。当然,开发者目前使用较多的还是相对传统的基础关系型数据库MySQL,还有大数据领域Redis、Apache/Hive、MongoDB等相对比较传统的技术,但绝大部分都是开源的。尽管最普遍被使用的依然是关系型数据库,但新型数据库则代表了未来趋势。根据CSDN 2021-2022年数据库开发者大调查显示,在云趋势下,有52%的公司已经部署了云数据库,只有23%的公司尚未计划部署云数据库。新型数据库人才抢手对于目前的就业环境,我认为开发者应当好好学习数据库技术,并且不要局限于仅学习关系型数据库,更要学新型数据库。为什么呢?新型数据库的技术栈跟过去大有不同,关系型数据库只是里面最基础的一环,而数据分析、数据仓库、可视化等很多新型技术栈在涌现。开源中比较热门的新数据库类型包括分布式数据库、时序数据库、图数据库、流式数据库等都在GitHub上排名非常靠前,Star数也非常高。20年前,市面上只有关系型数据库,主要面向事务性的交易。而如今得益于云、微服务、分布式应用、全球规模、实时数据、深度学习等,新的数据库架构应运而生,以解决新的性能需求:快速读取和快速写入的不同系统;专门用于支持实时分析的系统;用于非结构化、半结构化、事务性、关系、图形或时间序列数据的系统;适用于缓存、搜索、基于索引、事件等的数据……据统计,一家企业平均在七个或更多不同的数据库中存储数据。这些新技术带来了新机会,同时也加大了市场对人才的需求。我国数据工程师真正诞生是在十几年前。而现在,随着数据量的激增且更多地存储在云端,越来越多公司变成数据公司、市场对数据公司的需求也在持续增长。基于数据做分析的数据分析工程师也非常重要,他们既要了解数据库的技术,又要懂业务,才能更好地进行数据分析,这样的人才在未来会非常紧俏。据Glassdoor(美国一家做企业点评与职位搜索的职场社区)统计,从2016年到2020年,“数据科学家”在美国最佳工作排行榜中一直位居榜首,被称为21世纪最性感的工作。现在,数据科学家和数据工程师的需求还在持续上升,薪资也是。目前,中国对数据库人才的需求也具有相同趋势,尽管过去在关系型数据库领域处于引领地位的还是Oracle的MySQL数据库。但我相信,中国未来会构建自己的数据库新生态。中国也非常有机会在新技术上进行弯道超车,例如腾讯云数据库TDSQL,以及其他新型数据库。同时,也希望更多CSDN平台上的开发者能够加入新型数据库赛道中来,并欢迎大家去参加能力认证活动。
  • [计算] 两地三中心容灾解决方案
    两地三中心1、生产数据中心和容灾中心分别部署在华为云2个不用的Region。同城双AZ,异地容灾中心单AZ。2、在生产和容灾中心分别部署云数据库实例,同城跨AZ使用云数据库主备模式,跨Region使用DRS服务实现云数据库复制。3、生产和容灾中心产生的应用配置、日志、备份等,通过CBR实现跨区备份。4、生产站点某个AZ故障时,通过SDRS将应用切换到另一个AZ,数据库主备切换。5、region1故障时,切换数据库的主备状态,将DNS授权修改未生产站点0%,容灾站点100%。6、生产Region修复后,数据库切换回主库,DNS切换回主站。
  • [认证交流] LNMP、LAMP数据库
    LAMP:Linux + Apache + MySQL+php的组合方式LNMP:Linux + Nginx + MySQL+php的组合方式LAMP和LNMP最主要的区别在于:一个使用的是Apache,一个使用的是Nginx。Linux 开源免费软件,作为网站的操作系统Apache/Nginx Web服务器软件MySQL 多线程多用户的数据库管理系统,用来存放数据PHP 服务器端的应用程序软件,快速执行动态网页LAMP:使用的是Apache,Apache是世界是用排名第一的Web服务器软件,其几乎可以在所有广泛使用的计算机平台上运营,由于其跨平台和安全性被广泛使用,是最流行的Web服务端软件之一。相比于nginx,apache有些臃肿,内存和CPU开销较大,性能上有损耗,nginx对于静态文件的响应能力远高apache。 Apache是负载PHP的最佳选择,如果流量很大的话,可以使用nginx来负载非PHP的Web请求。。LNMP:使用的是Nginx,Nginx是一款高性能额Http和反向代理服务器,也是一个AMAP/POP3/SMTP服务器。nginx使用资源更少,支持更多并发连接,效率更高,作为负载均衡服务器。nginx即可对内进行支持,也可对外进行服务,安装简单。总之:1、LNMP方式的优点:占用VPS资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。缺点:php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 bad gateway错误。2、基于 LAMP 架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是 Web 网络应用和环境的优秀组合。若是服务器配置比较低的个人网站,当然首选 LNMP 架构。当然,在大流量的时候。把Apache和Nginx结合起来使用,也不失为一个不错选择。
  • [综合] 云业务知识整理
    知识点一 裸金属的优势,然后怎么给高性能计算需求客户推荐上云裸金属:为用户提供专属的物理服务器,提供卓越的计算性能,满足核心应用场景对高性能及稳定性的需求,结合了传统托管服务器带来的稳定性能与云中资源高度弹性的优势。安全可靠裸金属服务器是用户专属的计算资源,支持VPC、安全组隔离;支持主机安全相关组件集成;基于擎天架构的裸金属服务器支持云磁盘作为系统盘和数据盘,支持硬盘备份恢复能力;支持对接专属存储,满足企业数据安全和监管的业务安全和可靠性诉求。性能卓越裸金属服务器继承物理服务器特征,无虚拟化开销和性能损失,100%释放算力资源。结合华为自研擎天软硬协同架构,支持高带宽、低时延云存储、云网络访问性能;满足企业数据库、大数据、容器、HPC、AI等关键业务部署密度和性能诉求。敏捷的部署效率裸金属服务器基于擎天加速硬件支持云磁盘作为系统盘快速发放;分钟级资源发放,基于统一console控制台、开放API和SDK,支持自助式资源生命周期管理和运维。云服务和解决方案快速集成裸金属服务器基于统一的VPC模型,支持公有云云服务的快速集成;帮助企业客户实现数据库、大数据、容器、HPC、AI等关键业务云化解决方案集成和加速业务云化上线效率。推荐高性能客户上云:选配ECS高配性能版-若客户的核心业务对于虚拟化环境运行无特殊要求,仅仅是性能要求较高,这是一个可用的选择;如果客户特殊异构计算的性能需求,可以推进GPU、AI、HPC、FGPA等异构计算服务若客户高性能业务不可兼容虚拟化环境,则可推荐BMS裸金属服务;知识点二 云原生/考容器/虚拟化的联系及区别,CI/CD Devops/微服务关系云原生:在容器技术、可持续交付、编排系统等开源社区的推动下,以及微服务等开发理念的带动下,应用上云已经是不可逆转的趋势,随着云化技术的不断发展,云原生的概念也应运而生。容器和虚拟化的区别:区别:1、容器主机必须有OS环境2、容器没有虚拟化软件3、容器应用镜像来自于公共HUB、私有、社区4、容器引擎安装镜像---运行实例5、容器无需安装OS+无需作任何配置对比:占用空间:容器-MB级别,虚拟化-GB级;运行速度:容器:秒级、虚拟化:分钟级;安全隔离性:容器隔离性不如计算虚拟化(因为共享OS);创建数量:容器无上限,计算虚拟化(受限于虚拟化软件)CI/CD Devops/微服务关系CI/CD:持续开发、交付、部署、扩容/快速反馈,响应业务需求DevOPs:开发、测试、交付、运维一体,微服务的最佳组织阵型微服务:独立开发、发布、交付、部署容器及其编排:敏捷的基础设施、按需急用、微服务最佳载体知识点三 然后根据题目画容器业务vpc子网拓扑图(1)CCE内分为两个工作负载,Web负载和数据库负载,位与同一个VPC内(2)数据库集群与WEB集群间使用clusterip方式访问(3)WEB集群和外网的service通过 LB方式访问知识点四 lamp数据库和应用都分别用主机部署,请问用什么规格的存储,并说明原因(应用服务器数据存储200g,文件数据增长快)具体考的时候,如果你真的抽到这个题目,要看清楚题干对吧,题干上面应该会说这个应用数据库,它的读写环境有没有要求什么的,要具体要结合题目。如果仅基于现有的信息:1、Apache服务器:WEB应用程序的服务器, 当客户端请求的是静态资源时,web服务器会直接把静态资源返回客户端;2、当客户端请求的是动态资源时,httpd的php模块会进行相应的动态资源运算,如果此过程还需要数据库的数据作为运算参数时,php会连接mysql取得数据然后进行运算,运算的结果转为静态资源并由web服务器返回到客户端。对于应用服务器,由于文件数据增长快,建议还是选用云硬盘,可以选用高性能。知识点五 Vpc及业务管理双平面虚拟私有云VPC每个虚拟私有云VPC由一个私网网段、路由表和至少一个子网组成。(1)私网网段:用户在创建虚拟私有云VPC时,需要指定虚拟私有云VPC使用的私网网段。当前虚拟私有云VPC支持的网段有10.0.0.0/8~24、172.16.0.0/12~24和192.168.0.0/16~24。(2)子网:云资源(例如云服务器、云数据库等)必须部署在子网内。所以虚拟私有云VPC创建完成后,需要为虚拟私有云VPC划分一个或多个子网,子网网段必须在私网网段内。(3)路由表:在创建虚拟私有云VPC时,系统会自动生成默认路由表,默认路由表的作用是保证了同一个虚拟私有云VPC下的所有子网互通。当默认路由表中的路由策略无法满足应用(比如未绑定弹性公网IP的云服务器需要访问外网)时,可以通过创建自定义路由表来解决。业务管理双平面 知识点六 ACL、SG出入策略ACL、SG出入策略网络ACL与安全组类似,都是安全防护策略,当您想增加额外的安全防护层时,就可以启用网络ACL。安全组对云服务器、云容器、云数据库等实例进行防护,网络ACL对子网进行防护,两者结合起来,可以实现更精细、更复杂的安全访问控制。 安全组SG安全组是一个逻辑上的分组,为同一个VPC内具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当实例加入该安全组后,即受到这些访问规则的保护。系统会为每个用户默认创建一个默认安全组,默认安全组的规则是在出方向上的数据报文全部放行,入方向访问受限,安全组内的实例无需添加规则即可互相访问。默认安全组可以直接使用,也可以根据需要创建自定义的安全组。安全组创建后,您可以在安全组中设置出方向、入方向规则,这些规则会对安全组内部的实例出入方向网络流量进行访问控制,当实例加入该安全组后,即受到这些访问规则的保护。安全组规则包括如下组成部分:来源:源数据(入方向)或目标数据(出方向)的IP。协议类型和协议端口:包括协议类型和协议端口,协议类型如TCP、UDP、HTTP等。源地址:可以是IP地址、安全组、IP地址组。类型:IP地址类型。开通IPv6功能后可见。描述:安全组规则的描述信息。访问控制ACL网络ACL是一个子网级别的可选安全层,通过与子网关联的出方向/入方向规则控制出入子网的数据流。每个网络ACL都包含一组默认规则,如下所示:默认放通同一子网内的流量。默认放通目的IP地址为255.255.255.255/32的广播报文。用于配置主机的启动信息。默认放通目的网段为224.0.0.0/24的组播报文。供路由协议使用。默认放通目的IP地址为169.254.169.254/32,TCP端口为80的metadata报文。用于获取元数据。默认放通公共服务预留网段资源的报文,例如目的网段为100.125.0.0/16的报文。除上述默认放通的流量外,其余出入子网的流量全部拒绝,网络ACL规则的优先级使用“优先级”值来表示,优先级的值越小,优先级越高,最先应用。优先级的值为“*”的是默认规则,优先级最低。多个网络ACL规则冲突,优先级高的规则生效,优先级低的不生效。若某个规则需要优先或落后生效,可在对应规则(需要优先或落后于某个规则生效的规则)前面或后面插入此规则。通过网络ACL添加拒绝规则,可以拒绝恶意IP、恶意协议、恶意端口的访问;通过网络ACL设置子网间的访问规则,可以对子网间访问进行限制;网络ACL支持规则编排,可以把访问频繁的规则置顶,提高性能。知识点七 云原生的通俗解释+画图示意微服务 CICD devops 容器化的关系+四个各自的功能作用Pivotal 最新官网对云原生概括为 4 个要点:DevOps+持续交付+微服务+容器。符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps 支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。微服务   应用间通过RESTFUL API通信 DEVOPS  自动化发布管道、CI工具云原生   快速部署到生产环境开发、运维协同工作CI/CD    持续交付  频繁发布、快速交付、快速反馈、降低发布风险容器化    微服务的载体微服务功能微服务 :1、按照业务来划分服务,单个服务代码量小,业务单一,易于维护2、每个微服务都有自己独立的基础组件,例如数据库、缓存等,且运行在独立的进程中3、微服务之间的通信是通过HTTP 协议或者消息组件,且具有容错能力4、微服务有一套服务治理的解决方案,服务之间不相合,可以随时加入和剔除服务5、单个微服务能够集群化部署,并且有负载均衡的能力6、整个微服务系统应该有一个完整的安全机制,包括用户验证、权限验证、资源保护等7、整个微服务系统有链路追踪的能力8、有一套完整的实时日志系统微服务具备功能:1、服务的注册和发现2、服务的负载均衡3、服务的容错4、服务网关5、服务配置的统一管理6、链路追踪7、实时日志CICD:CICD实现了从代码开发、代码编译、部署、测试、发布上线自动化的一套自动化构建的流程;CI即持续集成(Continuous Integration),它实现代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果进行反馈。CD包含两个含义:持续交付(Continuous Delivery),它实现部署到生产环境,给用户进行使用持续部署(Continuous Deployment),它实现部署到生产环境 devops :DevOps 就是让开发人员和运维人员更好地沟通合作,通过自动化流程来使得软件整体过程更加快捷和可靠容器化:容器是通过一种虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程就叫容器,它有自己的一套文件系统资源和从属进程。知识点八、一个算存储容量的题,oceanstore ,4台存储(每台12块,一块冷备,做raid5),加一个级联的存储机框(24块盘,不做raid),问一共多少容量。4*10*单盘+24*单知识点九、核数:2*16=32核 内存:8*16g=128g 2、核数:2*16*0.25=8核(0.25平均负载)       2*16*0.85=27.2(峰值负载0.85,可取32) 内存:8*16*0.68=87.04G(可取96g) 存储空间:系统盘未知, 数据库盘:8*500g*0.5(raid10利用率)=2000G 要求:1、cpu平均利用率小于50%,2内存利用率小于70%,3无特别说明按照1:1选型,4保证峰值压力。 怎么计算选型?32核/128G /2000GB知识点九 24块盘,2块保险盘不存数据,一块高热盘、一块低热盘,分两组做了raid5,可用容量:24T实际容量:20T (高热做校验,低热做冗余)容量使用率:20/24可用硬盘数:20知识点十 视频点播,直播分别是两个不同的域名,绑定的同一个ip,华为云什么服务可以实现该功能,并简要说明步骤ELB+CDN知识点十一 华为云服务有哪些特性可以保证高性能和高可靠(数据库)数据库本身特性服务高可用:可用区内部主备、跨可用区主备数据高可靠:在线存储数据可靠性9个9、备份存储数据可靠性11个9数据高安全:(1)连接安全:VPC、子网、安全组、VPN、SSL(2)安全管理:管控平台严格做到不碰用户业务数据(3)数据加密:储存数据加密,秘钥严格管理用分布式数据库中间件DDM1、用分布式数据库中间件(DDM):分布式关系型数据库,兼容Mysql协议,采用存储计算分离架构的模式,使得存储、计算层可以无限扩展,从而拥有海量数据高并发访问能力。2、DDM部署过程基本架构就是DDM下挂多个Mysql实例,包括只读实例和写实例:步骤一:购买数据库中间件实例及RDS for MySQL实例步骤二:创建逻辑库并关联RDS for MySQL实例步骤三:创建DDM帐号步骤四:连接DDM逻辑库读写分离、采用高可用部署读写分离,主备版部署或集群版部署(一主一备五只读)四、数据多样化存储关系型数据库支持与分布式缓存服务Redis、Memcached对象存储服务等产品搭配使用,基于双机热备的高可用架构,提供单机、主从、集群等丰富类型的缓存类型,满足用户高并发及数据快速访问的业务需求。12. 怎么创建私有镜像?怎么通过私有镜像配置挂到obs挂载给云主机?(吴琦)13、24盘,分两组raid5,问可用空间,目前有多少块盘没有被用14、目的数据库oracle但是不用rds,采用哪种模式15、计算模式下应用了哪些服务知识点十六、私有镜像创建zhxx-app.vmdk和zhxx-db.vmdk是否都能导入华为云镜像的方式部署?对于Vmware镜像文件.vmdk部署为华为云的弹性云服务器ECS,其流程主要步骤有哪些?华为云支持导入vhd、vmdk、qcow2、raw、vhdx、qcow、vdi、qed、zvhd或zvhd2格式镜像文件。使用公有云镜像服务,步骤如下: 准备符合平台要求的外部镜像文件。 上传外部镜像文件到OBS个人桶中。 通过管理控制台选择上传的镜像文件,并将镜像文件注册为私有镜像。 私有镜像注册成功后,使用该镜像创建新的云服务器。知识点十八 网络ACL、SG策略规划 业务系统网段VPC与其他VPC互通关系ACL、SG策略办公系统192.168.10.0/24SG:入向、端口:443,源IP段0.0.0.0/0教务系统192.168.20.0/24与知识点十九 视频、流媒体容器化由于视频业务客户负载变化难以预测,需要根据CPU/内存使用率进行实时扩缩容。可以利用CCE容器引擎,来实现弹性伸缩应用。 知识点二十 外网内网负载均衡(web服务器、应用服务器、数据库)知识点二十一 使用容器引擎客户端上传镜像开始——安装容器引擎——构建镜像——创建组织——连接容器镜像服务——上传镜像——结束
  • [计算] 华为云服务高性能和高可靠性(数据库)
    (1)数据库本身特性服务高可用:可用区内部主备、跨可用区主备数据高可靠:在线存储数据可靠性9个9、备份存储数据可靠性11个9数据高安全:(1)连接安全:VPC、子网、安全组、VPN、SSL(2)安全管理:管控平台严格做到不碰用户业务数据(3)数据加密:储存数据加密,秘钥严格管理(2)分布式数据库中间件DDM       分布式关系型数据库,兼容Mysql协议,采用存储计算分离架构的模式,使得存储、计算层可以无限扩展,从而拥有海量数据高并发访问能力。DDM将数据分散到多个数据节点(RDS for MySQL)存储,每个数据节点都能承担合适的数据存储和计算负载,分散风险,将故障影响面降低至1/N,达到稳定可靠的效果,支持业务爆发式增长,DDM采用存储计算分离架构,支持计算层、存储层在线增加资源,存储层可以通过增加分片数或者数据节点数来解决单表数据量过多或者容量瓶颈等问题,打消业务在快速发展的过程中针对数据库扩展性产生的后顾之忧与运维压力。DDM部署过程基本架构就是DDM下挂多个Mysql实例,包括只读实例和写实例:步骤一:购买数据库中间件实例及RDS for MySQL实例步骤二:创建逻辑库并关联RDS for MySQL实例步骤三:创建DDM帐号步骤四:连接DDM逻辑库(3)读写分离、采用高可用部署读写分离,主备版部署或集群版部署(一主一备五只读)(4)数据多样化存储关系型数据库支持与分布式缓存服务(DCS)Redis、Memcached对象存储服务等产品搭配使用,基于双机热备的高可用架构,提供单机、主从、集群等丰富类型的缓存类型,满足用户高并发及数据快速访问的业务需求。 
  • [大咖交流] 容器的高可用原理分析
    一、容器集群高可用部署原理:1.CCE高可用集群采用分别在3个AZ中部署三套Master节点方式;2.应用AZ内高可用部署,通过ClusterIP服务调用不跨AZ。3.应用发布LoadBalancer类型的Service对接到集群所在AZ的融合ELB服务实例;4.应用通过VIP访问数据库,数据库自动切换应用不感知。5.支持多AZ动态容器存储,根据pod所在AZ创建数据卷。高可用架构原理图:二、容器实例高可用容器高可用依赖于多实例部署,在合理配置反亲和后,如果发生单实例、单节点、单AZ故障,业务均不受影响。容器多实例可以实现多节点、多可用区部署
  • [其他] LNMP、LAMP数据库
    LAMP:Linux + Apache + MySQL+php的组合方式LNMP:Linux + Nginx + MySQL+php的组合方式LAMP和LNMP最主要的区别在于:一个使用的是Apache,一个使用的是Nginx。Linux 开源免费软件,作为网站的操作系统 Apache/Nginx Web服务器软件 MySQL 多线程多用户的数据库管理系统,用来存放数据 PHP 服务器端的应用程序软件,快速执行动态网页LAMP:使用的是Apache,Apache是世界是用排名第一的Web服务器软件,其几乎可以在所有广泛使用的计算机平台上运营,由于其跨平台和安全性被广泛使用,是最流行的Web服务端软件之一。相比于nginx,apache有些臃肿,内存和CPU开销较大,性能上有损耗,nginx对于静态文件的响应能力远高apache。 Apache是负载PHP的最佳选择,如果流量很大的话,可以使用nginx来负载非PHP的Web请求。。LNMP:使用的是Nginx,Nginx是一款高性能额Http和反向代理服务器,也是一个AMAP/POP3/SMTP服务器。nginx使用资源更少,支持更多并发连接,效率更高,作为负载均衡服务器。nginx即可对内进行支持,也可对外进行服务,安装简单。总之:1、LNMP方式的优点:占用VPS资源较少,Nginx配置起来也比较简单,利用fast-cgi的方式动态解析PHP脚本。缺点:php-fpm组件的负载能力有限,在访问量巨大的时候,php-fpm进程容易僵死,容易发生502 bad gateway错误。2、基于 LAMP 架构设计具有成本低廉、部署灵活、快速开发、安全稳定等特点,是 Web 网络应用和环境的优秀组合。若是服务器配置比较低的个人网站,当然首选 LNMP 架构。当然,在大流量的时候。把Apache和Nginx结合起来使用,也不失为一个不错选择。
  • [其他] 数据库高性能用哪种,怎么部署怎么计费?
    1、用分布式数据库中间件(DDM)2、部署过程基本架构就是DDM下挂多个Mysql实例,包括只读实例和写实例:步骤一:购买数据库中间件实例及RDS for MySQL实例步骤二:创建逻辑库并关联RDS for MySQL实例步骤三:创建DDM帐号步骤四:连接DDM逻辑库3、计费包年包月/按需付费(小时)