“腾讯云 TDSQL-C 产品测评活动”是由腾讯云联合 CSDN 推出的针对数据库产品测评及产品体验活动,本次活动主要面向 TDSQL-C Serverless版。
本次参与活动可以涵盖不同技术层面的用户,可以针对TDSQL-C产品的自动弹性能力、自动启停能力、兼容性、安全、并发、可靠性等多方面进行产品的体验和测评,参与活动的同时既可以收获相关技术领域的实战经验同时也可获得丰厚的活动激励。
Cloud Native 应 “ 云 ” 而生 —— 云原生数据库面向服务架构
TDSQL-C MySQL 版数据库是搭建在腾讯云现有的高效稳定的云服务之上,能快速地搭建出高性能、高可用、高可靠的一套云数据库。
Creative “ 分 ” 而 治之 —— 计算与存储分离,日志即数据库
TDSQL-C MySQL 版实现了“日志即数据库”的架构,将计算(CPU、内存)与存储分离,通过对 MySQL 内核的深度改造,卸载了不必要的功能模块,实现了无状态的计算节点,使得计算资源可以在秒级的时间内完成弹性扩展和故障恢复,并将其构建在腾讯云分布式云存储之上实现了存储资源的池化。
Comprehensive “ 兼 ” 容并包 —— 全面兼容新版开源数据库
100%兼容开源数据库引擎 MySQL,还会定期实现对新版本的支持,几乎无需改动代码,即可完成现有数据库的查询、应用和工具平滑迁移,为用户大大降低数据迁移的成本和风险。
Cohesive 相 “ 辅 ” 相成 —— 极简的软件优化释放硬件红利
TDSQL-C MySQL 版通过数据库内核、系统架构等软件优化,有效提升了数据库性能和稳定性,较传统架构的数据库产品有了大幅提升。在相同硬件条件下性能更为出众,即先释放硬件红利,并完美适配新硬件的发展趋势,最大程度上提升数据库服务效能。
Cost Effective 事半功 “ 倍 ” —— 性能成倍提升,按量计费
我们需要一个在性能上能超过传统数据库的云数据库,并且可以给用户减少成本压力,因为云计算的本身其实是要给客户一个很实惠的服务,所以 TDSQL-C MySQL 版,可实现真正的按量计费和弹性的扩缩容。
TDSQL-C MySQL 版为用户提供具备超高弹性、高性能、海量存储、安全可靠的数据库服务,可帮助企业轻松应对诸如商品订单等高频交易、伴随流量洪峰的快速增长业务、游戏业务、历史订单等大数据量低频查询、金融数据安全相关、开发测试、成本敏感等的业务场景。以下为您从互联网移动 APP、游戏应用、电商直播教育行业、金融保险企业来介绍 TDSQL-C MySQL 版能够应对这些业务场景的条件和优势。
腾讯云地址
**注意 **:这里的实例形态我们选择
Serverless
- 实例形态 **(Serverless)**
- 数据库引擎 **(MYSQL)**
- 地域 **(北京)** *地域这里根据自己的实际情况选择即可*
- 主可用区 **(北京三区)** *主可用区这里根据自己的实际情况选择即可*
- 多可用区部署 **(否)**
- 传输链路
- 网络
- 数据库版本 **(MySQL5.7)**
- 算力配置 **最小(0.25) , 最大(0.5)**
- 自动暂停 **根据自己需求配置即可**
- 计算计费模式 **(按量计费)**
- 存储计费模式 **(按量计费)**
我的配置截图如下:
前往管理页面
开启外部
至此我们的准备工作就完成了, 其实还是蛮简单的哦!
所需数据 如下
文件在实验手册里有提供哦
工程目录如下
讲解说明:
background.png
作为词云图背景图wordPhoto.py
为脚本文件TDSQL
打开数据库读写实例 找到相关配置 如图
# MySQL数据库连接配置
db_config = {
'host': "XXXXXX", # 这里填写你自己申请的外部主机名
'port': xxxx, # 这里填写你自己申请的外部的端口
'user': "root", # 账户
'password': "", # 密码就是你自己创建实例时的密码
'database': 'tdsql', # 这里需要自己在自己创建的`tdsql`中创建数据库 ,
}
代码可以根据提供的实验手册进行编写即可 , 这里提供一下完整代码 , 有需要的可以拿走哦
import pymysql
import pandas as pd
import os
import wordcloud
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
# MySQL数据库连接配置
db_config = {
'host': "XXXXXX", # 这里填写你自己申请的外部主机名
'port': xxxx, # 这里填写你自己申请的外部的端口
'user': "root", # 账户
'password': "", # 密码就是你自己创建实例时的密码
'database': 'tdsql', # 这里需要自己在自己创建的`tdsql`中创建数据库 ,
}
def create_table(table_name, columns):
# 建立MySQL数据库连接
conn = pymysql.connect(**db_config)
cursor = conn.cursor()
# 组装创建表的 SQL 查询语句
query = f"CREATE TABLE IF NOT EXISTS {table_name} ("
for col_name, col_type in columns.items():
query += f"{col_name} {col_type}, "
query = query.rstrip(", ") # 去除最后一个逗号和空格
query += ")"
# 执行创建表的操作
cursor.execute(query)
# 提交事务并关闭连接
conn.commit()
cursor.close()
conn.close()
def excelTomysql():
path = '词频' # 文件所在文件夹
files = [path + "/" + i for i in os.listdir(path)] # 获取文件夹下的文件名,并拼接完整路径
for file_path in files:
print(file_path)
filename = os.path.basename(file_path)
table_name = os.path.splitext(filename)[0] # 使用文件名作为表名,去除文件扩展名
# 使用pandas库读取Excel文件
data = pd.read_excel(file_path, engine="openpyxl", header=0) # 假设第一行是列名
columns = {col: "VARCHAR(255)" for col in data.columns} # 动态生成列名和数据类型
create_table(table_name, columns) # 创建表
save_to_mysql(data, table_name) # 将数据保存到MySQL数据库中,并使用文件名作为表名
print(filename + ' uploaded and saved to MySQL successfully')
def save_to_mysql(data, table_name):
# 建立MySQL数据库连接
conn = pymysql.connect(**db_config)
cursor = conn.cursor()
# 将数据写入MySQL表中(假设数据只有一个Sheet)
for index, row in data.iterrows():
query = f"INSERT INTO {table_name} ("
for col_name in data.columns:
query += f"{col_name}, "
query = query.rstrip(", ") # 去除最后一个逗号和空格
query += ") VALUES ("
values = tuple(row)
query += ("%s, " * len(values)).rstrip(", ") # 动态生成值的占位符
query += ")"
cursor.execute(query, values)
# 提交事务并关闭连接
conn.commit()
cursor.close()
conn.close()
def query_data():
# 建立MySQL数据库连接
conn = pymysql.connect(**db_config)
cursor = conn.cursor()
# 查询所有表名
cursor.execute("SHOW TABLES")
tables = cursor.fetchall()
data = []
dic_list = []
table_name_list = []
for table in tables:
# for table in [tables[-1]]:
table_name = table[0]
table_name_list.append(table_name)
query = f"SELECT * FROM {table_name}"
# # 执行查询并获取结果
cursor.execute(query)
result = cursor.fetchall()
if len(result) > 0:
columns = [desc[0] for desc in cursor.description]
table_data = [{columns[i]: row[i] for i in range(len(columns))} for row in result]
data.extend(table_data)
dic = {}
for i in data:
dic[i['word']] = float(i['count'])
dic_list.append(dic)
conn.commit()
cursor.close()
conn.close()
return dic_list, table_name_list
if __name__ == '__main__':
excelTomysql()
result_list, table_name_list = query_data()
for i in range(len(result_list)):
maskImage = np.array(Image.open('background.PNG')) # 定义词频背景图
# 定义词云样式
wc = wordcloud.WordCloud(
font_path='PingFangBold.ttf', # 设置字体
mask=maskImage, # 设置背景图
max_words=800, # 最多显示词数
max_font_size=200) # 字号最大值
# 生成词云图
wc.generate_from_frequencies(result_list[i]) # 从字典生成词云
# 保存图片到指定文件夹
wc.to_file("词云图/{}.png".format(table_name_list[i]))
print("生成的词云图【{}】已经保存成功!".format(table_name_list[i] + '.png'))
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
plt.show() # 显示图像
效果如下 :
通过TDSQL-C for MySQL Serverless架构云数据库,可以体现云原生架构所带来的核心价值,如一些海量存储场景,存储数据、文件,并且性能也得到了很大的提升,如支持并行计算的能力,提升SQL性能,包括并行扫描,并行的多表连接、排序、分组、聚合等并行能力。
同时,在简单易用上面,也提供了很多参数模板,监控指标优化、备份和日志方面等可视化操作,极大降低了运维成本。
通过从0到1的了解与学习,TDSQL-C MySQL Serverless构建了一个产品全景能力图,并不仅仅是平时认知的数据库,通过控制台、客户端,通过凭证管理、审计能够进行一切监控,来给用户提供非常安全的访问环境。再通过参数的调优去辅助、协助用户更好的使用数据库,更优的使用数据库,让业务运行的更快,而不是将数据库不行的时候升配。再到整体架构,支持物理机、云服务器架构,支持异地的灾备,搭建符合公司企业级的业务需求,为公司带来降本提效。