PolarDB国赛初赛作品提交指南
参考文档点击文末阅读原文打开; 推荐《最好的PostgreSQL学习镜像》;
PolarDB国赛初赛作品提交指南
PolarDB数据库创新设计大赛面向全国大学生(本科及专科)。 章程、初赛赛题、评测方案都已发布, 请参见官网:
https://gitlab.eduxiji.net/csc1/csc-pb/2024-pb/-/tree/main
目前初赛已经开放作品提交, 下面是提交作品的简单教程, 教大家如何提交作品(以及为了获得更好的性能, 提供了修改几行代码的简单示例).
1、报名参赛
https://tianchi.aliyun.com/specials/promotion/2024-csdcc-polardb
2、在你自己的电脑中准备docker desktop调试环境
略
3、下载开发镜像, 启动容器, 进入容器
# 下载开发镜像
docker pull registry.cn-hangzhou.aliyuncs.com/polardb_pg/polardb_pg_devel:ubuntu20.04 # 启动容器
docker run -d -it -P --shm-size=1g --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --name polardb_pg_devel registry.cn-hangzhou.aliyuncs.com/polardb_pg/polardb_pg_devel:ubuntu20.04 bash
# 进入容器
docker exec -ti polardb_pg_devel bash
4、在容器中下载比赛分支代码
https://github.com/ApsaraDB/PolarDB-for-PostgreSQL/tree/polardb-competition-2024
cd /tmp git clone --depth 1 -b polardb-competition-2024 https://github.com/ApsaraDB/PolarDB-for-PostgreSQL
5、可选步骤, 在容器中略微修改代码. (以下是示例代码, 请勿直接使用), 请根据自己对比赛的理解进行修改
cd /tmp/PolarDB-for-PostgreSQL # 备份原始文件
cp tpch_copy.sh tpch_copy.sh.bak
修改代码(以下是示例代码, 请勿直接使用), 请根据自己对比赛的理解进行修改
vi tpch_copy.sh ...tpch_copy.sh脚本上面的部分未修改, 略...
...修改的部分如下...
###################### PHASE 1: create table ######################
if [[ $PGDATABASE != "postgres" ]];
then
echo "create the tpch database: $PGDATABASE"
psql -c "create database $PGDATABASE" -d postgres
fi
# add by digoal
sed "s/CREATE TABLE/CREATE UNLOGGED TABLE/g" ../tpch-dbgen/dss.ddl > /tmp/dss.ddl
mv -f /tmp/dss.ddl ../tpch-dbgen/
psql -f $tpch_dir/dss.ddl
###################### PHASE 2: load data ######################
# modify by digoal
psql -c "ALTER SYSTEM SET polar_bulk_extend_size = '4MB';"
psql -c "ALTER SYSTEM SET polar_index_create_bulk_extend_size = 512;"
psql -c "SELECT pg_reload_conf();"
psql -c "update pg_class set relpersistence ='u' where relnamespace='public'::regnamespace;"
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY nation FROM '$data_dir/nation.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY region FROM '$data_dir/region.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY part FROM '$data_dir/part.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY supplier FROM '$data_dir/supplier.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY partsupp FROM '$data_dir/partsupp.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY customer FROM '$data_dir/customer.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY orders FROM '$data_dir/orders.tbl' WITH (FORMAT csv, DELIMITER '|');" &
psql -h ~/tmp_master_dir_polardb_pg_1100_bld -c "\COPY lineitem FROM '$data_dir/lineitem.tbl' WITH (FORMAT csv, DELIMITER '|');" &
wait
...tpch_copy.sh脚本下面的部分未修改, 略...
6、可选步骤, 在容器中测试修改过的代码
生成测试数据若干
cd /tmp/PolarDB-for-PostgreSQL/tpch-dbgen make -f makefile.suite
./dbgen -f -s 0.1
将测试数据放到与测试机一致的目录
cd /tmp/PolarDB-for-PostgreSQL/tpch-dbgen
sudo mkdir /data
sudo chown -R postgres:postgres /data
sudo mv *.tbl /data/
初始化PolarDB数据库集群
cd /tmp/PolarDB-for-PostgreSQL
chmod 700 polardb_build.sh
./polardb_build.sh --without-fbl --debug=off
测试修改过的代码(测试机考察该脚本执行时间)
chmod 777 tpch_copy.sh time ./tpch_copy.sh
result
real 0m1.715s
user 0m0.080s
sys 0m0.110s
6.1、可选步骤, 如果对PolarDB内核的改动较大, 建议按评测方案提供的脚本回归测试基本功能, 无误再进行后续步骤.
先停库
pg_ctl stop -m fast -D ~/tmp_master_dir_polardb_pg_1100_bld
回归测试 确认无误
cd /tmp/PolarDB-for-PostgreSQL
./polardb_build.sh --withrep -r -e -r-external -r-contrib -r-pl --with-tde
7、在容器中压缩准备提交的代码分支
先停库
pg_ctl stop -m fast -D ~/tmp_master_dir_polardb_pg_1100_bld
清理编译过程产生的内容
cd /tmp/PolarDB-for-PostgreSQL/tpch-dbgen
make clean -f makefile.suite cd /tmp/PolarDB-for-PostgreSQL
make clean
make distclean
打包
sudo apt-get install -y zip
cd /tmp
zip -r PolarDB-for-PostgreSQL.zip PolarDB-for-PostgreSQL/
8、在宿主机操作, 将容器中打包好的代码文件拷贝到宿主机
cd ~/Downloads
docker cp polardb_pg_devel:/tmp/PolarDB-for-PostgreSQL.zip ./
9、将代码文件提交到比赛平台
打开网站: https://tianchi.aliyun.com/competition/entrance/532261/submission/1365
依次点击
提交结果 镜像路径 - 配置路径 - TCCFile 上传 ~/Downloads/PolarDB-for-PostgreSQL.zip- 确定如果之前已经提交了, 要先点击删除再上传 上传完毕后, 点击提交
10、查看成绩
https://tianchi.aliyun.com/competition/entrance/532261/score
平台查询分数和对应的代码分支好像不太方便, 每次提交出成绩后建议自己保存一下分数以及对应的代码版本. 方便未来基于最优的版本继续迭代.
11、提交代码说明和方案(千万不要忘记这步, 否则即使成绩能进决赛也会被认为放弃决赛资格)
根据初赛评测方案, 将代码修改说明和技术方案按标准的邮件标题发送到邮箱 [email protected]
参考
https://gitlab.eduxiji.net/csc1/csc-pb/2024-pb/-/tree/main
https://tianchi.aliyun.com/specials/promotion/2024-csdcc-polardb
https://tianchi.aliyun.com/competition/entrance/532261/submission/1365
PolarDB公开课导航
7、国产数据库PolarDB公开课-6 使用PostgreSQL开源工具/插件
11、国产数据库PolarDB公开课-9 参与开源社区