本课程为原先《数据库引擎开发》课程第二版改版,增加了大家较为感兴趣的“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 课程试听 特别说明如下: 本门课程本来打算完全免费,某位大神曾经说过“成功就是正确的方向再加上适度的压力”。考虑到讲师本身要付出巨大的劳动,为了防止一些朋友在学习途中半途而废,浪费了讲师的付出,为此我们计划模仿某些健身课程,使用“逆向收费”的方法。 在 报名时每位报名者收取400元,其中100元为固定 收费,另外300是暂存学费,即如果学员能完成全部课程要求,包括完成全部的书面和互动作业,则300元全款退回。如果学员未能坚持到完全所有的学习计划任务,则会被扣款。期望这种方式可以转化为大家强烈的学习愿望和驱动力! 课程授课方式: 1、 学习方式:老师发布教学资料、教材,幻灯片和视频,学员通过网络下载学习。同时通过论坛互动中老师对学员进行指导及学员之间相互交流。 2、 学习作业:老师每周布置书面及互动作业,学员需按时按质完成作业。 3、 老师辅导:根据作业批改中发现的问题,针对性给予辅导,帮助大家掌握知识。 4、 结业测验:通过测验,完成学业。 全国统一咨询热线 4008-010-006 课程现开始接受报名,报名方式 网上报名 请点击: 数据库引擎开发(第四期) 咨询Email :edu01@dataguru.cn,edu02@dataguru.cn 课程入门讨论咨询群: 303917420(群内有培训公开课视频供大家免费观看) 咨询QQ: 2222010006 (上班时间在线) 技术热点、 行业资讯,培训课程信息,尽在炼数成金官方微信,低成本传递高端知识!技术成就梦想!欢迎关注! 打开微信,使用扫一扫功能,即刻关注炼数成金官方微信账户,不容错过的精彩,欢迎您的体验!!! |