炼数成金 门户 培训 查看内容

《数据库引擎与SQL优化器开发》课程

2013-5-8 19:38| 发布者: cruiser| 查看: 19773| 评论: 0|原作者: cruiser

数据库 SQL C++ SQL优化 数据库引擎

本课程为原先《数据库引擎开发》课程第二版改版,增加了大家较为感兴趣的“SQL优化器开发”部分,课程名也改成《数据库引擎与SQL优化器开发》。SQL优化器设计是任何数据库的核心技术,加入这部分内容后,本课程所研发的数据库已经超出原有范畴,迥然变身成当前最时尚的NewSQL数据库!

中国IT行业起步较晚,加上国情和民族性格的原因,大部分人更乐于使用外国人现成的软件(大部分还是盗版),开发点小应用,系统级别的软件几乎没有胆量去挑战。在大多数国人的心目中,象大型操作系统,大型数据库系统这样的软件,就是个禁区。对于性格容易自卑,技术学习没有恒心和耐力,遇难则退的国人,根本从来没有想象过有一天,自己也有能力去挑战。君不见,PUB上的数据库爱好者们,对于各种Oracle内幕,比如块构造,隐藏参数等津津乐道,对于调整好一条SQL使之在甲骨文的优化器下能高性能运转具有巨大的满足感成功感,仿佛自己掌握了天下最有价值的真理,驾驭了天下最有难度的技术。但对于设计,编写出这个数据库的人来说,他们看到此情此景,只好躲在一边偷偷哂笑。用数据库的称为大师,那么自己写出一个数据库的又该称为什么呢?
我们具有聪明的头脑,缺乏的是高瞻远瞩的眼光和迎难而上的勇气!现在,我们设计了一个新的课程,参与者将有机会学习怎样用C++写出一个完整的数据库软件!而这个课程几乎是免费的!课程不光培养技术,更加培养勇气!


《数据库引擎开发》课程概述:
该课程通过15次课,大约30课时介绍创建一个简易分布式文档型数据库

目标:创建一个Linux下简易分布式文档型数据库

数据库支持:
多线程
记录的增删查
单条记录的原子性操作
持久化磁盘存储
分布式存储
BSON的记录格式
全部查询或者_id精准查询
_id字段的散列索引
不支持:
多层数据结构(比如表空间、表等概念)
事务
高可用
范围查询
在线增删节点
除_id以外字段的检索
数据修改

持久性
SQL查询

语言:C++

目标代码量1-3万行

目标
通过本课学员可以:
深入理解NoSQL数据库的内部工作原理
实现一个可存取数据的分布式数据存储
理解文档式NoSQL数据库的适用场景
了解关系型数据库与非关系型的针对特性与各自的实现机制
暂时还没有列入本课程的内容:
实现关系型数据库的ACID
实现商用型非关系型数据库
保证数据的高可用性与稳定性
SQL语法解析


课程内容

第一课:NoSQL数据库简介与环境配置
讲述数据库的核心功能,以及NoSQL与关系型数据库的侧重点
简述该课程的目标,在课程结束后能够实现的数据库功能
介绍数据库的整体架构
介绍开发环境的搭建
预计时间两小时

第二课:建立数据库连接
实现单线程客户端连接,能够向服务端发送请求
实现多线程服务端连接,能够从客户端接收请求
预计时间两小时

第三课:阀锁,配置,日志等
定义服务端的一些底层基础组件
预计时间两小时

第四课:数据库引擎底层搭建1
建立线程数据结构
建立线程调度机制
预计时间两小时

第五课:消息封装
定义客户端服务器的消息通讯结构
预计时间两小时

第六课:数据的持久化存放
Mmap,内存与磁盘的映射
数据块的分配与回收
预计时间两小时

第七课:数据的存储结构
BSON与数据记录的结构设计
数据文件存储结构设计
预计时间两小时

第八课:数据的插入,读取与删除
数据的插入,查询与删除
客户端增加相应的功能
预计时间两小时

第九课:散列索引
数据键的散列桶与内存结构
数据库启动自动建立散列索引
预计时间两小时

第十课:数据库理论
介绍数据库的一些基本原理,包括事务,SQL编译与执行等
预计时间两小时

第十一课:SQL解析和优化
SQL编译进阶,优化器概念与实现原理。
预计时间2小时

第十二课:Java驱动
连接多点数据库并查询
建立数据的散列机制,能够在正确的分区上查找数据
预计时间一小时

第十三课:监控、性能调优和测试
介绍数据库监控和调优理论,并实现数据库的基本监控快照功能
介绍软件测试流程与自动化测试
预计时间两小时

第十四课:Java应用
建立Java应用程序,使用驱动与数据库通讯
预计时间两小时

第十五课:总结
总结前14节课的步骤
扩展讨论
多数据层次(表空间,表)
日志
高可用性
持久性

事务
多字段查询与更新
B树索引
SQL解析
基于规则的SQL优化器
基于开销的SQL优化器
预计时间2小时

授课时间:
课程4月26日开课,课程持续时间为17周。

授课对象
熟悉C/C++语言
对数据库底层实现感兴趣的IT人或学习者有兴趣往源代码方向发展的挑战者

预期收获
1 知道怎样去设计和实现一个数据库,从而获得加入数据库软件厂商的研发团队的机会
2 通过课程极度熟悉c++编程,特别是socket编程和内存管理,这是晋升c++高手的必经之路,c语言的能力属于内功级,可以增加IT人的底气,无论从事系统级软件,还是底层开发,嵌入式开发,移动开发,客户端开发都能得心应手!具备源码级挑战能力的高手深受各大企业的欢迎,金饭碗指日可待!
3 加深对数据库的理解,即使只是数据库用家也能从中获益

讲师简介
王涛
ITPUB资深斑竹(wangzhongnew),毕业于加拿大卡尔加里大学,于2005年在IBM多伦多实验室进行DB2数据库的研发与技术支持,并参与设计IBM下一代弹性数据平台。2012年创立SequoiaDB巨杉NoSQL数据库并担任总架构师与首席技术官。

完整版介绍请见附件的pdf  [attach]70739[/attach]
预习参考书目C++对于大部分人,至少都在求学阶段学过,但可能长期没有使用。如果要重拾和补强,老师给了一些参考书,可以在课前预习,也可以边上课边补,有充足的时间让你变得更加强大!
Essential C++
http://product.dangdang.com/product.aspx?product_id=20925824

C++ Primer Plus
http://product.dangdang.com/product.aspx?product_id=22783504

The C++ Standard Library
http://www.amazon.com/Standard-Library-Tutorial-Reference-2nd/dp/0321623215

Boost程序库完全开发指南
http://product.dangdang.com/product.aspx?product_id=23170652

编译:
autotools
http://www.amazon.com/Autotools-Practioners-Autoconf-Automake-Libtool/dp/1593272065

Socket:
TCP/IP Sockets编程
http://product.dangdang.com/product.aspx?product_id=20719481

多线程:
Programming POSIX Threads
http://www.amazon.com/Programming-POSIX-Threads-David-Butenhof/dp/0201633922

课程试听

新颖的课程收费形式:“逆向收费”约等于免费学习,仅收取100元固定收费+300元暂存学费,学习圆满则全额奖励返还给学员!

特别说明如下:
本门课程本来打算完全免费,某位大神曾经说过“成功就是正确的方向再加上适度的压力”。考虑到讲师本身要付出巨大的劳动,为了防止一些朋友在学习途中半途而废,浪费了讲师的付出,为此我们计划模仿某些健身课程,使用“逆向收费”的方法。
在 报名时每位报名者收取400元,其中100元为固定 收费,另外300是暂存学费,即如果学员能完成全部课程要求,包括完成全部的书面和互动作业,则300元全款退回,优秀的学员还可以获得礼品 奖励。如果学员未能坚持到完全所有的学习计划任务,则会被扣款。期望这种方式可以转化为大家强烈的学习愿望和驱动力!

课程授课方式:
1、 学习方式:老师发布教学资料、教材,幻灯片和视频,学员通过网络下载学习。同时通过论坛互动中老师对学员进行指导及学员之间相互交流。
2、 学习作业:老师每周布置书面及互动作业,学员需按时按质完成作业。
3、 老师辅导:根据作业批改中发现的问题,针对性给予辅导,帮助大家掌握知识。
4、 结业测验:通过测验,完成学业。


全国统一咨询热线 4008-010-006

课程现开始接受报名,报名方式
网上报名 请点击: 数据库引擎开发(第四期) 
咨询Email :edu01@dataguru.cnedu02@dataguru.cn
课程入门讨论咨询群: 485625800(群内有培训公开课视频供大家免费观看 
咨询QQ: 2222010006 (上班时间在线)



最新技术热点、 最新行业资讯,最新培训课程信息,尽在炼数成金官方微信,低成本传递高端知识!技术成就梦想!欢迎关注!
打开微信,使用扫一扫功能,即刻关注炼数成金官方微信账户,不容错过的精彩,欢迎您的体验!!!
47

鲜花
1

握手
1

雷人
1

路过
2

鸡蛋

刚表态过的朋友 (52 人)

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2017-5-27 06:29 , Processed in 0.141761 second(s), 24 queries .