首页 / 更多教程 / 编译什么都队-数据库设计心得
编译什么都队-数据库设计心得
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了编译什么都队-数据库设计心得,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4840字,纯文字阅读大概需要7分钟。
内容图文
数据库设计心得
项目名称:Iot WEB平台
小组:编译什么都队
指导老师:李军义
小组成员:赵子安 刘骏驰 王韩 吴阶成 李国平
前言:
在本次软件工程导论课程中,需要完整的做一个真实的项目,从需求到原型,再转化为数据库,将之前学些的所有课程完全串联并在做中学去解决课程设计的一切难题。
在这次项目设计中,我们小组所选择的是设计一个IOT 物联网的基础平台,这对我们来说是一个全新的领域。在不断的学习和讨论中,这扇陌生的大门终于对我们开放,组里的每一位同学都充满了激情。
第一部分:需求讨论
我们的项目是中大数据检测的真实公司项目,主要工作为重构基础平台及优化目前的问题,现有的平台存在的问题之一是在数据量极大的情况下,数据检索速度慢,但是对于一些地质灾害的检测,又要保证数据的实时更新,给服务器带来了巨大的压力所以我们对已有的场景进行了深层次的分析,挖掘和优化。相比于其他组的项目,只需要设计一个数据库,我们这个项目需要分层分节点去设计不同层次的数据库,本项目的核心值是一个基础平台,为了老师在后期进行测试,我们还需要做一个业务场景的平台去调用基础平台的API,这里不仅需要从基础平台的总数据库中调用数据,还需要有自己业务场景的数据存储,又是另一个数据库,数据库的复杂性大致如此。
和老师多次开会了解完全部的需求之后,我们基础平台设计了如下的三层存储,
1·最底层是设备存储节点保存来自传感器的实时当天数据,
2·第二层是中间数据库,保存来自设备转发的一周的数据
3·第三层是云端数据库,保存所有历史的数据
当上层的业务场景平台去查询数据时,我们根据不同的时间节点,区域匹配到不同的数据库,如果说只需要当天实时的数据,将它转发到最底层的设备数据库进行查询即可,如果需要近一周或半年的,那么转发到中间层数据库原来的设计是传感器的数据,经过设备转发之后发送给数据总库,所有的查询都是在数据库里面查询,对于这个级别的数据,查询速度较慢我们深入分析之后发现大部分的业务场景对于传感器数据这种实时要求比较高,他们查询的时间范围也多数集中在一周之内,所以按照上述三层次节点存储, 将大部分的业务需求给分离出去,既提高了用户查询速度的体验又大大降低了云端数据总库的访问压力。
这给我们很深的感悟是设计数据库之初必须要根据真实的业务需求,去思考设计的方向。
如果没有老师的指导,我们可能也会按照过往经验做后台管理系统,那样直接开始设计一个数据库存储,然后进行字段的设计,却忽略了对业务场景进行最优的匹配。
第二部分:具体表设计
在具体的数据库设计过程中,我们多次组内讨论,对于传感器类别和具体型号的关系,设备具体类别和型号的关系,以及设备和传感器之间的绑定与解绑,这些数据表该如何进行设计?
我们刚开始的想法是根据不同的传感器去设计不同的表,因为传感器的测量属性不一样,测量的类别不一样,单位不一样,测量的个数也不一样,如果强行设计在一张表里面,恐怕会造成大量的字段的浪费。 例如拉力索引器,他会测x,y偏移和拉力的力矩,但是对于温度传感器,只需要测量温度这一个属性。但是在和组员碰撞思想的过程中,我们讨论得出这样太过浪费数据库的空间,类别设计和具体的型号设计不一样,向他们分成两个表,类表里面存放单位是测量的类别,测量单位,然后在具体的传感器型号表中,在进行这些字段的说明即可。本来信心满满,但是去和老师讨论的过程中,老师还是指出了,我们当前设计的一些不成熟的想法,并且给出了通过业务的需求去动态增加表,并且在已有的类表中增加一个字段存储动态增加的表名,听到这种设计思想我耳目一新,并在之后立刻按照老师的建议进行修改。
和老师进行这一部分的讨论,让我们深刻感受整个设计的思想一定要站在一定的高度和工程经验的基础上去思量,否则设计的数据库只是空中楼阁,不堪实用
第三部分:老师的建议
在具体的字段和优化中,周老师和李老师都分别给我们的初版进行建议,其中周老师在小班课上一山见血的指出了我在设计的过程中,使用varchar的长度太短,我之前考虑的是一个用户名,应该不会超过十个汉字,但是却没有考虑一个汉字,要占两个长度,所以出现一个很明显的严重的失误,就是所有字段的设计长度都偏短,这让我在事后进行了深刻的反思,对于细节的把控,才是我们是否有一个良好设计的关键,这一点我还是不够踏实。
李老师指出了我们的另一个方面的问题,我大量的使用了varchar类型,但是这个是可变长度,对应的索引也会很多,无形中增加了数据库的检索速度和系统的整体负担,这一点醍醐灌顶,让我更加深刻的理解到系统的优化,不是说最后设计完之后再反过头去进行优化,而是在设计之处,就要考虑每一个细节.
第四部分:心得体会:
- 从各种资料的查阅到开始的需求分析、概念结构设计、逻辑结构设计、物理结构设计,亲身体验了一回系统的设计开发过程,很多时候看起来很简单的东西,貌似思路非常清晰。但真正需要我们想办法去实现一个系统的时候才发现其中的难度。很多时候感觉后面的设计根本无法继续,感觉像是被前面做的图限制住了。经常做到后面的时候突然察觉我们一开始的设计有问题,然后再回去翻工,但是也在各种反复中不断地完善了我们的想法和能力。
- 这次课程设计加深了我们对数据库系统设计相关知识以及MySQL相关功能的理解以及power designer的使用。比如在建立基本的表、视图、索引、存储过程等,根据后面的数据库学习,我们发现自己的数据库设计还不是很高级,像触发器这类的东西就没有加入。但是我们也在‘做中学’,在解决各种问题的过程中学到了非常多新的知识。在设计中我们基本能按照规范的方法和步骤进行,先对系统进行调查,再查阅有关资料、进行讨论最后确定设计方案,然后设计并制作,然后再去找老师评审,再翻过头进行迭代。设计过程中我们深刻的认识到迭代开发的重要性,也对数据库的设计更加熟悉。
总的来说,这次数据库设计很好的将课程与实际相结合,我们的能力有了进一步的提升,对于项目的设计也有了更深的理解
内容总结
以上是互联网集市为您收集整理的编译什么都队-数据库设计心得全部内容,希望文章能够帮你解决编译什么都队-数据库设计心得所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。