首先声明一点,我不是什么十分之牛逼的人,编不了书,也写不出多高级的算法。只是谈谈这十几年开发历程过后的一点小小感悟吧了,孰好孰坏自行斟酌。
数据库SQL,我接触的有MSSQL,MYSQL,Oracle,PGSQL(PostgreSQL),Sqlite等等,基本上NET能用的我基本都用过,甚至Access MDB都用过。
首先很多新手接触项目开始,如果是NET配套的百分之九十应该都是MSSQL了吧,当然这统计是我胡诌的。
要不要用数据库这问题还用得找想吗,用,怎么不用,难道你不把数据存储起来吗,不用数据库,用什么用Execl吗?这不是废话。
这当然是废话,但废话至于首先你认为数据库的作用为什么要绑定在项目上,而我们又为什么一开始就似乎认定它就是NET归宿呢。
让我来谈谈我自己的一些无聊想法。
数据要存储用什么存储,数据库,什么数据库,啥都可以,把想要存储的内容存成TXT扔本地行不行,行啊,怎么不行。但你想过用TXT存储你要的东西的后果了吗。
第一数据存储了,你自己需不需要看,要看吧,要不要改,要吧,要不要拿出来蹂躏一下在存回去,肯定也遇到过吧。
用普通方式存储的后果是什么,存写个方法存,百度一堆一大把,TXT也好,只要能本地化存储起来的都行,那应该要涉及到分类问题吧,只要你不能只用一个文本来存,得分类,这样你的逻辑才能实现按需按类来快速查找,否则你自己实现的程序方法又怎么能找到你存好的东西呢,程序不是人,不一定按你所设想的那样,你要简单就得把答案想的简单,它简单了,你编程就复杂了。
反过来,你想过数据库存车一千条和文本存储一千条后,你用程序功能实现的方式来查找他们是否是一样,我觉得差不多,要说编程我就做个假设,我写个FileStream来写入文本按规则,我写两个三个方法来分类存储,高级点我再搞个压缩来压缩和解压对应的数据文件,这样获取减少了存储的空间,而反观数据库,妈蛋你想过没,老子没学过SQL用它个鬼,查询语句要不要会,SQL优化查询要不要考虑,SQLHelper.cs是不是得找来用,还要封装成GetDataTable,GetDateSet等各种方法,配置查询的Config,耗时好力,吃力不讨好说的就是这种。
而且数据库还是别人的东西,要真错误了,对于一个新手来说,这些问题可能一天都不一定能解决,这么辛苦做什么。
当然理想化的场景不会那么刚好,就存一千条数据,用个记事本拿笔手写记一记就可以了,用什么软件,也不会有人要你用软件来帮她实现这样业务。
所以我们得按可能至少一千条数据以上,保底十万的行数的数据存储游戏来说。
FileStream或者其他方法来手动实现的方法基本就不可取了,数据库是必然,但数据库到底为什么还是要用,除了存储目的还有什么,你可能这辈子也想不明白,想一想数据库都是别人定好的一套存储规则,能不能自己编一套。
当你想到这里,就说明你疯了,刚才一千行存储的示例你没看懂吗,看五十遍,看到菊花开的时候再停下来思考一天。
别人的规则,那就别人的,项目能完成才是要紧,用关系型数据库,哦对了,有关系型当然也有非关系型(NOSQL)数据库,比如Redis,MongoDB当然我自己用的也不多,这些是业务需要,这里暂不赘述。
一想到关系型就让人头痛,主键有没有,外键有没有,存储过程有没有,各种SQL语法有没有,有,都有,而且还挺烦的,我就像存储简单一张表,让我学那么多,有必要吗。
估计是有必要吧,当前除了数据库还真想不到有啥好方法来解决你的业务对于需要存储的东西的方案,所以只能用数据库了。
但用了吧,你得知道,你就得了解它,它是别人定制的一套规则,规则只是冰山一角,让你懂得存储和获取,所以本质上对于开发来说,用什么数据库看个人,看项目,没有好坏,当出现好坏的说法的时候,只能说你所用的数据库对应项目的设计或者架构很有问题你才有这种想法。
对于你做项目开发,首先考虑的就是满足存储的功能,Sqlite基本是用于单机,或者数据量不大,有或者不需要安装数据库的场景使用。
比如什么场景会涉及,我想要做一个自己用又可随便放到一台电脑的简单管理程序,Sqlite估计就是首选,现在基本很少人推荐Access的方式了,当然你可以提高点逼格,用个绿色版MSSQL,现在有SQL2000绿色版,支持XP到WIN10但版本也不一定好找。
在比如这样的场景,就是你需要做成单机的程序,考虑到对方是个电脑小白,不会装数据库,或者人家就想自己在本地上,不想装那么大的MSSQL,这个也估计适用,当然场景很多看如何评估。
通常有一定软件需求的个人,还是推荐用一些常规的数据库入MSSQL,MYSQL,Oracle就不建议了,不是企业性质一般不用考虑,PG一般是独立Linux环境,这些都不是硬性规定,还看个人喜欢和个人技术等问题。
所以项目还是要用数据库的,用了就是上面所说的,一定会有个别问题,是问题总有解决的时候,这个不用太担心,担心的是你又在胡思乱想猜测我为什么写下这篇文章。
我的目的只是怕有人跟我一样无聊会对数据库的算法发起什么不健康的想法。