集团主站
欢迎来到成都达内官方网站!达内—美国上市公司 亿元级外企IT培训企业!
成都it培训哪家好
成都it培训哪家好
全国服务监督电话:15023458194  |   联系客服   |
当前位置:主页 > 培训课程 > 大数据 >

成都学数据库开发,新手需要注意哪些问题

发布者: 成都达内     浏览次数:     发布时间:2019-08-12 11:13:07

和大多数新手程序员一样,数据库编程开发也是有许多问题需要注意的。今天我们就通过案例分析来了解一下,成都学数据库新手都有哪些问题需要注意。...

  和大多数新手程序员一样,数据库编程开发也是有许多问题需要注意的。今天我们就通过案例分析来了解一下,成都学数据库新手都有哪些问题需要注意。

  1.Storingimages储存图片

  数据库里不应该放图片。你可以做的事情并不代表你就应该去做。图片会占用数据库里相当大的空间,吃掉不必要的IO资源从而拖慢应用。这个错误常出现的情况,就是新人将图片用base64编码,然后将其储存在很大的text/blob字段当中。

  更好的办法是直接将图片上传至像AmazonS3这样的云服务上,然后用数据库里用text字段储存图片的URL。每次要加载一张图片的时候,只要把图片的URL输出到有效的img标签里就可以了。这会极大地提升网页的响应速度,对大规模Web应用非常有帮助。

  2.Limit/Offset

  分页在很多应用中都非常常见。从你开始学习SQL,(你就该知道)直接的分页方法就是先用ORDERBY对数据库的一些列进行排序,然后LIMIT返回的结果数,对除一页外的每一页使用OFFSET。这看起来很符合逻辑,直到你处理中等规模应用时才意识到:

  它对数据库施加的负载是非常痛苦的。

  它具有不确定性,记录应该随着用户翻页而改变。

  不幸的是:分页非常复杂,目前还没有一个万全之策。关于处理分页问题的更多信息,你可以参考这些方案。

  3.用整数做primarykey

  在创建primarykey的时候,几乎所有的ORM(ObjectRelationalMapping对象关系映射)的默认做法都是创建一个串行字段,它是按顺序自动生成的,然后你就可以用它(这些自动生成的数字)作为你的primarykey。在管理员看来,这是非常直观的,因为可以由用户1到用户2这样依次查看。对大多数的应用来说,这种做法通常是不错的。但是随着这些整数primarykey不断变大,你很快就会意识到处理他们会让人筋疲力尽。对于大规模系统,这是很不理想的处理方法。此外,你还会依赖生成这些key的那个系统,在你必须要扩大规模的时候,会非常痛苦。更好的解决办法是从一开始就利用好UUID(UniversallyUniqueIdentifier通用识别码)的优势。

  (UUID)还有其它的好处,那就是它不会无形中暴露给用户(数据库中)有多少用户、列表、或是这些key所指代的任何东西。

  成都学数据库开发,新手需要注意哪些问题

  4.新列中的默认值

  无论你做这个工作有多久,都不会一次就创建出一个完美的schema。好是将数据库schema视为一个持续演化的文档。不幸的是:向数据库中添加一列是件很容易的事,这也就意味着在添加列的时候把工作搞砸同样很容易。默认情况下,如果你新添加了一列,通常是允许有NULL值的。这个操作速度很快,但大多数应用实际上不太想让他们的数据里有null值,他们会想要设置默认值。

  如果你在表里添加设置了默认值的新列,会对这张表触发一次完全的重写。注意:这对应用中的任何(数据量)很大的表都非常不利。(正确的方法)恰恰相反,好是先允许null值存在,这样操作就是即时的,接下来再设置默认值,再用后台进程去回溯更新数据。

  实际操作比我所说的要更复杂,幸好已经有一些便利的指南可以为我们提供帮助。

  5.过度标准化

  开始学习数据库的标准化的时候,(标准化)感觉就像是很正确的事。你创建了一个posts的表,里面包含authors,每篇文章(post)都属于一个条目(category),所以你又创建了一个categories的表,然后再创建一个把它们俩join在一起的表,post_categories。从根本上来说,这样做标准化也没什么原则上的错误,但是某种程度上,标准化的收益正在递减。

  在上述实例中,categories可以简单地作为post里的一个varchar字段。标准化是件很有意义的工作,但是每次处理包含多对多关系的表时都要深思熟虑,想想你是不是真的需要在关系的两边都各用一个单独的表。

(责任编辑:范老师)
最新开班
  • 成都Java培训班
    免费试听名额发放中...
  • 成都C++培训班
    免费试听名额发放中...
  • 成都PHP培训班
    免费试听名额发放中...
  • 成都网络工程培训班
    免费试听名额发放中...
  • 成都Unity3D培训班
    免费试听名额发放中...
  • 成都大数据培训班
    免费试听名额发放中...
  • 成都uid培训班
    免费试听名额发放中...
  • 成都会计培训班
    免费试听名额发放中...
  • 成都Python培训班
    免费试听名额发放中...
  • 成都嵌入式培训班
    免费试听名额发放中...
  • 成都web培训班
    免费试听名额发放中...
  • 成都软件测试培训班
    免费试听名额发放中...
在线留言
提交

校区地址:成都市锦江区东大街紫东楼端35号明宇金融广场19楼1906室

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市高新区奥克斯广场蜀锦路209号一楼商铺

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都锦江区东大街芷泉街229号东方广场C座3楼303

联系电话:15023458194

公交路线:芷泉街(188路;115路;515路;236路;505路;501路;84路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:成都市武侯区佳灵路3号红牌楼广场2号写字楼11楼1115号

联系电话:15023458194

公交路线:红牌楼东(11路;92路;100路;111路;139路;g28路;快速公交K1/K2) 地铁路线:红牌楼站(地铁3号线)

校区地址:成都市锦江区红星路二段70号四川日报大厦502-2

联系电话:15023458194

公交路线:市二医院站(6路;49路;102路;5路;37路;g92路;) 地铁路线:地铁市二医院(地铁3号线)

校区地址:成都市锦江区东大街芷泉段229号东方广场C座16层

联系电话:15023458194

公交路线:芷泉街(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:东门大桥站(地铁2号线)

校区地址:四川省成都市武侯区高新科技孵化园9号园区E座7楼

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

校区地址:成都市高新区奥克斯广场B座1708

联系电话:15023458194

公交路线:益州大道锦城大道口(18路;21路;43路;48路;104路;152路;335路 ) 地铁路线:孵化园(地铁1号线)

了解达内动态
关注成都达内教育公众号

首页 | 关于达内 | 课程中心 | 专家师资 | 视频教程 | 学员空间 | 校企合作 | 新闻资讯 | 就业指导 | 网站地图

2016-2025 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56