`
backspace
  • 浏览: 137147 次
文章分类
社区版块
存档分类
最新评论

程序员学数据库那些事儿

 
阅读更多

最近有人问(是问,不是请教)我数据库怎么学?要学哪些?以下我谈一些个人想法。

  其实我的数据库知识不是很扎实,真心的。

 当年我学这个东西时某个大神告诉我“学会sql server”走遍天下都不怕。事实上,这几年如果只会sqlserver根本到哪都很惊悚。

原因?

1、如果是政府软件,虽然不像互联网那样高,但是数据存储量确实很大很大,大家想想譬如财政数据、公积金数据、民政局数据等,而且很多数据不能使用缓存,必须实时计算,当sql2008还没出现时,确实在大数据计算性能上不如oracle(同时期版本)

2、由于某些原因(你懂的),政府很少会同意使用windows服务器平台,大都会使用unix或linux平台,这就决定了sqlserver或者.net应用很难卖出去(当然不是完全不行,有些局部部门的软件还是可以的,机密数据那想都不要想)

3、对于企业项目,很多中小企业为了节约成本又想有节操的不使用盗版,那么mysql是他们最好的选择。

4、对于自己做网站,前期如果不想花大成本购买独立服务器的话,使用mysql是正道,便宜而且好用,最重要的是前期也没有这么多数据和人气让我们需要上高级数据库。

  其实我个人认为,至少掌握1-2个数据库是很有必要的,譬如mysql和oracle,至于sqlserver不是它简单,而是微软的大部分东西(没说全部)在用户体验和易学性上确实做得更甚一筹(易学性既是优点也是缺点,缺点在于出了问题你很难找到根本原因)

以下有几个建议关于怎么玩数据库。

 换个方法学习

  一、 不建议按部就班的学习,因为你这么学,别人也是这么学,而每个人的理解能力、技术基础、记忆力、周边环境和自己肚皮饱饿程度都是不同的,这些要素直接影响你的学习速度。

  如果大家都在同一起跑线上,使用相同的学习办法是不可取的

 二、自己逼自己

  模拟项目学习是我个人认为最好的办法。

  首先需要了解基本的语法,譬如select insert update 等等(还有一些,这里不一一列出)

  譬如我们新建一个新闻表叫做 news ,里面包含 id,title,content(text型),addtime,clickcount 5个字段。

  然后手工insert into 这张表50万条高仿真数据,注意是50万或更多且新闻内容字段数据必须要大(如"111,aaa,大大大" 这样的测试数据不如赶紧洗洗睡)。

  然后做一个页面,展示某一条新闻的详细,右边边栏展示(1、相关新闻 2、人气排行 3、两天内发布的新闻 等各10条)

 (1) 这时你会发现,取数据还真不能简单的 select * from 表 where id=X,你会需要学习如何创建字段索引、如何需要在该表中加入冗余字段,你还会发现当新闻表特别大的时候,用户每点击一次新闻此时如果update这张表的clickcount时页面很慢,你的笔记本风扇很烫。

 (2) 如果再复杂点需求,你会发现用视图比较好,或者用存储过程来更新一些数据效率更高,然后你会发现新增新闻时还要使用事务才行。于是逼着你去学这些知识。

 (3) 再进一步,你会发现自己做的新闻页面好丑好丑,于是逼着你去学css和html 和jquery

 (4) 然后你把表中的数据扩展到2000万以上,你会发现某些功能还真不是一张表可以搞定的。貌似还得了解数据库的分区甚至分表更甚的是你会发现还得用到分布式部署。 你还会学会用数据库sql查询分析器来分析哪条sql语句占了很大性能。甚至不同的sql语句有的比较耗内存,而有的sql语句让你的cpu涨到了100%。

 于是,我个人认为你本来学1个月然后做测试项目,共需2个月左右才能基本掌握一个数据库知识,如果用同步边学边自虐的方式很可能时间要节约20%-30%以上,并且让你掌握的更扎实。

  这就是为什么有的计算机系大学毕业的学生不如其他专业转行的学生。

总结:

  当然,技术(这里主要指开发相关)做到高级境界 其实是数学知识和自然社会知识的碰撞,和编程语言也就关系不大了。但是数据库知识是必须掌握的,不管你做什么样的应用,只要你需要存储数据那么必须了解数据库。

  如果你想作为业余爱好更深入的了解数据库,那么你可以从数据结构学起,深入了解数据库是怎么运作的,当然mysql都是开源的,学学思想很不错,当然我从没看过(因为看不懂以及没有经济实力去研究)。 

  如果在你还没有成为大神时就想自己开发一个关系型数据库,那可能不太现实。在我国玩这种事情的前提是必须要有钱,然后才能谈技术、谈团队、谈产品,否则你会深陷泥塘不可自拔。

  还有一句话,好的并且是赚钱的程序员大部分都是在特定时事背景中逼出来的,在这个范围内没有天才。

 

以上为个人观点,见仁见智。并非在任何场合都是正确的。

14
9
分享到:
评论
3 楼 manhunt 2013-07-25  
第二个方法值得去试
2 楼 raph_java 2013-07-24  
“好的并且是赚钱的程序员大部分都是在特定时事背景中逼出来的”,深有体会
1 楼 novembersky 2013-07-24  
新人如果不是立志做DBA,没必要在数据库管理方面深入。作为程序员,曾经痴迷过oracle一段时间,混迹在dba的圈子里,考dba的认证。对获得oracle ACE称号的大牛们非常崇拜。最后如愿拜入一位ACE大牛门下....最后仍然是做程序员

相关推荐

    java程序员的那些事儿

    "java程序员的那些事儿"这个主题涵盖了许多方面,包括学习路径、技术栈、开发实践、职业发展等。让我们深入探讨一下Java程序员在日常工作中的关键知识点。 首先,学习Java编程语言是基础。Java以其“一次编写,到处...

    Java程序员上班那点事儿txt版本

    ### Java程序员的职业发展路径 #### 一、Java程序员的基础技能要求 Java程序员作为软件开发领域的重要组成部分,在工作之前需要具备一系列的基本技能与专业知识。根据给定文件中的描述,我们可以总结出以下几点: ...

    Java程序员上班那点事儿.txt

    - **数据库管理**:熟练使用MySQL,并了解Oracle等其他数据库管理系统。 - **操作系统管理**:具备Linux系统操作能力,同时对Solaris等其他操作系统有一定了解。 - **网络通信**:掌握网络基础知识,能够进行基本的...

    Java程序员 上班那点事儿.pdf

    ### Java程序员 上班那点事儿 #### 知识点概览 1. **技术全面性与实际需求的差异** - 应聘者的技能全面但缺乏针对性。 - 企业需求更加具体化。 2. **求职者的自我认知与定位** - 如何明确自己的职业定位。 - ...

    java程序员上班那些事儿.pdf

    ### Java程序员上班那些事儿 #### 一、求职者与企业之间的认知差异 ##### 1.1 应聘者的自我定位问题 - **高大全式的技能列表**:许多求职者在简历上罗列了大量的技能,从传统编程语言如C++、VB,到现代技术如Java...

    java程序员上班那点事儿

    在实际工作中,Java程序员会接触到大量的开源库和框架,例如Spring Framework用于构建企业级应用,MyBatis用于数据库操作,Apache HttpClient进行HTTP请求,以及JUnit和Mockito进行单元测试。掌握这些工具的使用可以...

    Java程序员上班那点事儿.

    本书《Java程序员上班那点事儿》旨在为即将踏入这个领域的新人提供全面的指引,帮助他们更好地理解这个职业,并为入职后的职业生涯规划提供清晰的方向。 首先,Java是一种广泛使用的面向对象的编程语言,其强大的跨...

    Java程序员上班那点事儿(Word版)

    本文将基于一篇名为“Java程序员上班那点事儿”的文档内容进行深入探讨,旨在帮助即将步入职场的Java程序员更好地理解自己的职业定位和发展方向。 #### 二、Java程序员求职现状分析 **1. 技能全面与岗位需求不符**...

    java 程序员上班那点事儿

    【标题】:“java 程序员上班那点事儿” 【描述】:“对新入职和即将走上工作岗位的java程序员指导”意味着本资料旨在帮助新手Java程序员熟悉职场环境,提升职业技能,适应工作流程,并解决可能遇到的问题。这可能...

    Java程序员上班那点事儿.rar

    Java程序员在日常工作中所面临的挑战和经验是多样且丰富的,这份名为"Java程序员上班那点事儿"的压缩包,很显然包含了一些与Java编程、软件开发以及程序员生活相关的主题。让我们一起深入探讨其中可能涵盖的知识点。...

Global site tag (gtag.js) - Google Analytics