1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【腾讯云TDSQL-C Serverless 产品测评】大数据时代是谁在国产数据库中开荒?

【腾讯云TDSQL-C Serverless 产品测评】大数据时代是谁在国产数据库中开荒?

时间:2023-06-20 10:48:31

相关推荐

【腾讯云TDSQL-C Serverless 产品测评】大数据时代是谁在国产数据库中开荒?

【腾讯云TDSQL-C Serverless 产品测评】大数据时代是谁在国产数据库中开荒?

文章目录

【腾讯云TDSQL-C Serverless 产品测评】大数据时代是谁在国产数据库中开荒?活动背景前言TDSQL-C Serverless环境搭建1.0 兼容性测试1.1 构建测试环境1.1.1 针对文章表创建视图1.1.2 针对文章增加索引1.1.3 创建触发器1.1.4 创建事件1.1.5 创建储存过程 1.2 执行兼容性测试1.2.1 使用mysqldum进行数据导出1.2.2 通过 DMC 平台进行数据导入1.2.3 视图测试验证1.2.4 索引测试验证1.2.4 存储过程测试验证1.2.6 触发器测试验证1.2.7 事件测试验证 1.3 兼容性测试总结 2.0 可用性测试2.1 构建可用性测试环境2.2 验证可用性2.2.1 执行回档2.2.2 回档数据对比 2.3 可用性测试总结 总结

活动背景

“腾讯云TDSQL-C产品测评活动”是由腾讯云联合CSDN推出的针对数据库产品测评及产品体验活动,本次活动主要面向TDSQL-C Serverless版;

本次参与活动涵盖不同技术层面的用户,初步的产品体验或针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并发、可靠性等多方面的产品测评,并通过征文的方式输出,参与活动的同时既可以收获相关技术领域的实战经验同时也可获得丰厚的活动激励。

点击参加活动

前言

最近在CSDN上也是看到关于腾讯云TDSQL-C Serverless数据库的活动,每次遇到陌生领域的东西,我觉得都很有必要参与一下,这次也是不例外,不过我觉得不仅仅是因为我没使用和了解过,主要是数据库本身就在我们的软件工程中就是非常重要的,随着软件的发展,编程语言对整个系统的影响越来越小,我们所见到的数据,所提交的表单,都需要我们的底层数据库有一个良好的支撑,所以在数据库的选择上是至关重要的;

为什么我觉得腾讯云的TDSQL-C Serverless数据库是值得研究的呢?

以下是官网举例的一些优势

它可以完全兼容开源数据库MySQL 5.7、8.0,业务无需改造即可平滑迁移超高性能:单节点百万QPS的超高性能,保证关键业务的连续性,并可进一步提供读写分离以及读写扩展性。海量存储:最高支持PB级的海量存储,为客户免去面对海量的数据时频繁分库分表的繁琐操作,同时支持数据压缩,在海量数据检索和写入性能上进行了大量优化。秒级故障恢复:计算节点实现了无状态,支持秒级的故障切换和恢复,即便计算节点所在的物理机宕机也可以在一分钟之内恢复。数据高可靠:集群支持安全组和VPC网络隔离。自动维护数据和备份的多个副本,保障数据安全可靠,可靠性达99.9999999%。弹性扩展:计算节点可根据业务需要快速升降配,秒级完成扩容,结合弹性存储,实现计算资源的成本最优。快速只读扩展:计算节点可根据业务需要快速添加只读节点,一个集群支持秒级添加或删除1个 - 15个只读节点,快速应对业务峰值和变化场景。快照备份回档:基于数据多版本的秒级快照备份对用户的数据进行连续备份保护,免去主从架构备份回档数据的同步和搬迁,最高以GB/秒的速度极速并行回档,保证业务数据迅速恢复。Serverless 架构:Serverless是腾讯自研云原生数据库 TDSQL-C MySQL 版的无服务器架构版,自动扩缩容,仅按照实际使用量计费,不用不计费,轻松应对业务数据量动态变化和持续增长。

说实话,光看优点很吸引人,但是对于没有使用过的用户来说,谁知道是不是吹牛呢?真金不怕火炼,我带着这个想法开始了对它数据库的一个测评!

本次测评内容主要围绕两方面进行:

兼容性测试可用性测试

TDSQL-C Serverless环境搭建

整个环境构建非常的简单其实,官方的文档特别明了,这里我简要概述一下我的搭建过程,正常到 TDSQL-C 控制台是没有集群的,是下面这个状态

然后我们点击去购买集群,就会到购买页

根据我们的地区,和实例形态就可以进行购买了,之后下一步下一步设置密码和实例的配置就可以创建成功了,整个实例是按量付费的,而且没有流量来的时候实例是暂停的,所以根本不需要多少钱,所以大家也不用担心,参与实验的成本特别低!

1.0 兼容性测试

当涉及兼容性测试时,我主要是重点测试以下几个方面的兼容性:

索引:验证数据库中的索引是否能够在tdsql数据库中正确地创建和使用,以确保查询性能和数据完整性的兼容性。存储过程:检查老项目中存在的存储过程是否能够在tdsql数据库中正确执行,并确保其逻辑和功能的兼容性。视图:验证系统中使用的视图是否能够在tdsql数据库中正确定义和使用,以确保数据的一致性和查询结果的兼容性。数据表:确认数据表的结构和约束是否能够在tdsql数据库中正确创建,并保持数据的完整性和兼容性。触发器:检测触发器是否能够在tdsql数据库中正确触发和执行,以确保业务逻辑的兼容性和数据的一致性。事件:验证事件是否能够在新系统中按预期调度和执行,以确保定时任务和事件处理的兼容性。

在我们的很多老项目中,存储过程的使用非常常见,并且视图在系统中也广泛运用。因此,对于兼容性测试来说,这些方面都是不可或缺的。我们需要确保这些核心组件在新系统中能够正确运行,以保证平稳的迁移和功能的无缝衔接。

1.1 构建测试环境

这里我是通过利用我的个人线上博客进行测试的,数据库中还有一些文章数据,数据库版本如下:

mysql5.7.16-log

TDSQL-C Servless数据库版本如下:

5.7.18-cynos-log

然后我们开始构建我们的一些测试数据!!

1.1.1 针对文章表创建视图

SQL如下:

create view posts_view as select * from posts

1.1.2 针对文章增加索引

这里我主要创建了三个索引类型:

唯一索引:针对post_slug创建普通索引:针对uuid字段创建多字段联合索引:针对author_idcreated_by构建复合索引

这样可以有效观察数据库是否能够平滑将各种索引进行迁移

1.1.3 创建触发器

我的触发器逻辑是:当文章的title进行修改后就增加一条记录到log_table表中,记录好前值和修改后的值

首先我创建了一张log_table

触发器sql代码如下

CREATE TRIGGER alter_eventBEFORE UPDATE ON postsFOR EACH ROWBEGINIF NEW.title <> OLD.title THENINSERT INTO log_table (event_type, event_description) VALUES ('Update', CONCAT('title updated from ', OLD.title, ' to ', NEW.title));END IF;END;

然后我们将posts表中的title字段进行修改,看看触发器是否正常:

这样我们的触发器就算可以了!

1.1.4 创建事件

这个事件的主要逻辑就是每一秒对log_table插入一条测试数据:

inert_event sql代码如下

CREATE EVENT insert_eventON SCHEDULE EVERY 1 SECONDCOMMENT 'This event inserts a new record every second'DOBEGININSERT INTO log_table (`event_type`, `event_description`)VALUES ('test event', 'test event');END;

查看所有事件

1.1.5 创建储存过程

这个存储过程的逻辑就是查询posts表中的id字段,然后循环将id字段改为大写进行修改

存储过程sql如下

DELIMITER //CREATE PROCEDURE ConvertIdToUpperCase()BEGINDECLARE done INT DEFAULT FALSE;DECLARE currentId VARCHAR(255);-- 游标声明DECLARE cur CURSOR FORSELECT id FROM posts;-- 游标异常处理DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;-- 打开游标OPEN cur;-- 循环读取并更新每一行数据read_loop: LOOP-- 读取下一行数据FETCH cur INTO currentId;IF done THENLEAVE read_loop;END IF;-- 将 id 字段转换为大写UPDATE posts SET id = UPPER(currentId) WHERE id = currentId;END LOOP;-- 关闭游标CLOSE cur;-- 打印操作完成信息SELECT 'Id 字段转换为大写完成。';END //DELIMITER ;

到现在为止,我们的测试环境就算构建的差不多了

1.2 执行兼容性测试

这里我们测试主要过程是:

利用mysqldump将我们目前的数据进行导出通过腾讯dmc平台进行sql文件导入观察导入后的数据是否正常 索引触发器事件表结构存储过程等

1.2.1 使用mysqldum进行数据导出

mysqldump -uroot -h 81.69.6.xx -p --port=3307 --routines --triggers --events -B > backup.sql

1.2.2 通过 DMC 平台进行数据导入

得到backup.sql后,我们通过腾讯云的DMC管理平台进行导入,首先在集群页面找到登录按钮,然后逐步按照截图进行即可!

点击开始后就可以开始执行任务了,这里我们可以看到已经成功了

接下来就是验证索引、存储过程、视图、事件、触发器是否正常

1.2.3 视图测试验证

主要看视图是否能够正常查询,并且数据是否正常

1.2.4 索引测试验证
1.2.4 存储过程测试验证
1.2.6 触发器测试验证
1.2.7 事件测试验证

1.3 兼容性测试总结

综合来看,对于我要测试的一些场景和数据来说是完全兼容且完整的,通过索引、存储过程、触发器、事件、视图来看,

我们日常使用的Mysql的数据库和TDSQL-C Mysql Serverless是完全兼容!这意味着,对于我们以前的传统数据库可以无缝完好地迁移到TDSQL-C Mysql Serverless中,而无需担心数据丢失或兼容性问题。

这其实是一个很重要很关键的事情,数据库是我们业务的核心,当我们决定迁移数据库时, 确保兼容性是至关重要的。

2.0 可用性测试

这里的可用性测试我主要是通过一些高危操作,例如误删数据等,进行特定库表恢复,其实可用性测试远不止如此,但是我们对于数据库最重要的就是数据的安全性,所以以这个为例,希望大家可以更好地判断数据库的选型!

无论是按时间点恢复还是按备份集恢复,都需要先将备份数据回档到原集群中,然后进行数据比对。

2.1 构建可用性测试环境

首先,在测试前,我们也是先手动全量备份一下集群,正常是可以通过设置每天自动备份的,这里为了更好的演示,我先进行一次全量备份:

这样就是全量备份好了,然后我们模拟删除一张表的数据,这里我把log_table这张表的数据删除了

2.2 验证可用性

2.2.1 执行回档

因为这里我知道时间,所以这里我直接回档到 19:00,也可以按照备份文件回档

2.2.2 回档数据对比
原始表

回档表

2.3 可用性测试总结

事实证明,当集群中的某个表或数据被误删或误修改,需要将其恢复到原有状态时,TDSQL-C Mysql Serverless数据库是完全能够保护数据的完整性的,用户可以根据时间点和备份集进行选择恢复,并且在创建集群后,系统是默认开启自动备份,根据日志生成速率等因素,实现24小时不间断备份,备份文件生成周期间隔6~48小时不等,用户也可以根据业务需求,在控制台对备份保留时间进行设置,基于此,当对集群操作库表级恢复时,控制台会直接向用户展示可恢复的时间点和备份集。

总结

其实最终不管怎么测试,我也没有办法将整个产品的能力都测试出来,不管是兼容性还是可用性测试,都是我的个人观点,不过最终测试结果,也证实了产品宣传的真实性;

经过这次的深入体验,我也想到一个场景是我可以替换成TDSQL-C Mysql Serverless的 ,像我们的开发测试环境和一些低频查询场景,夜间几乎没有查询或写入,然后我们就可以通过serverless数据库的特性,利用业务负载自动启动停止,无感扩缩容。计算节点关闭期间也不计费,设置最小cpu最大cpu实现弹性扩缩容根据实际负载按秒计量,按小时结算。

这样我们既满足了业务对计算的需求,又在低峰节约成本,最大化利用资源。

同时我也总结了一下TDSQL-C Serverless数据库系统相较于传统数据库系统具备 4 个方面的优势:

弹性:TDSQL-C Serverless数据库可以基于工作负载实现自动扩缩容, 使实际资源使用量实时匹配于工作负载,避免因预先部署资源不足导致的业务容量瓶颈。可用性: 云数据库同时维护多个计算和存储副本以保证系统的高可用性灵活性: 开箱即用的特性让用户免于复杂的数据库部署过程; 系统支持自动化的运维调优,降低用户的管理压力.低成本: 按需计费模型让用户仅需为实际资源使用量付费,而非传统的预置模式, 结合实际工作负载的波动性, 云数据库能大幅降低用户的使用成本。

最后,希望本文能够为大家在数据库选型及TDSQL-C Serverless版的使用上提供一些有效的帮助。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。