图片,文件,二进制数据
既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的!别的先不提,在很多数据库语言里,处理大字段都不是很容易。
把文件存放在数据库里有很多问题:
- 对数据库的读/写的速度永远都赶不上文件系统处理的速度
- 数据库备份变的巨大,越来越耗时间
- 对文件的访问需要穿越你的应用层和数据库层
这后两个是真正的杀手。把图片缩略图存到数据库里?很好,那你就不能使用nginx或其它类型的轻量级服务器来处理它们了。
给自己行个方便吧,在数据库里只简单的存放一个磁盘上你的文件的相对路径,或者使用S3或CDN之类的服务。
短生命期数据
使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。使用redis,
statsd/graphite,
Riak,它们都是干这种事情更合适的工具。这建议也适用于对于收集那些短生命期的数据。
当然,用挖土机在后花园里种土豆也是可行的,但相比起从储物间里拿出一把铲子,你预约一台挖土机、等它赶到你的园子里挖坑,这显然更慢。你要选择合适的工具来处理手头上的事。
日志文件
把日志数据存放到数据库里,表面上看起来似乎不错,而且“将来也许我需要对这些数据进行复杂的查询”,这样的话很得人心。这样做并不是一个特别差的做法,但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。
也许你的日志记录做的很保守,每次web请求只产生一条日志。对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作,争夺你用户需要的数据库资源。如果你的日志级别设置为verbose或debug,那等着看你的数据库着火吧。
你应该使用一些比如Splunk
Loggly或纯文本文件来存放你的日志数据。这样去查看它们也许会不方便,但这样的时候不多,甚至有时候你需要写出一些代码来分析出你想要的答案,但总的来说是值得的。
可是稍等一下,你是那片不一样的雪花,你遇到的问题会如此的不同,所以,如果你把上面提到的三种东西中的某一种放到了数据库里也不会有问题。不,你错了,不,你不特殊。相信我。
分享到:
相关推荐
图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片),完整的demo例子,可运行。
图片,文件,二进制数据永远不要放到mysql数据库里。很多人会觉得既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的! 别的先不提,在很多数据库语言里,处理大字段都不是很容易。...
php基础教程文件以二进制形式上传并放入数据库
EXCEL数据导入到ACCESS数据库的三种方式
Vb将图片放入Access数据库更新并保存,从标题就能看出本程序主要演示如何将图片存入数据库,这里图片对格式要求很宽,平时的BMP/JPG/GIF都可以保存,打开程序后,浏览到保存数据的数据库,程序会自动索引到图片信息...
串口数据采集入MySQL数据库V2.0 串口数据采集入MySQL数据库V2.0
将图片存入数据库,并从数据库中读取
java代码操作数据转移,把一个数据库里的东西移动到另一个数据库,自动建库建表。
将数据库中查询出来的数据放入cache中存储,以便下一次拿出来。
不涉及业务的增删改查,包括从数据库取数放入Gridview控件,利用了三层架构思想,包括对数据库操作的封装希望对新手有帮助
唐诗三百首数据库,包含唐诗三百首全部数据。
数据库系统原理与设计第三版课后答案 ,是各大高校计算机专业教授数据库的通用教材,但此书课后没有答案,令学生们学习带来诸多不便,因此这里提供全部题目答案,与大家分享。
数据库数据库数据库数据库
轻松实现将Excel中的数据导入到数据库中。
三层数据库系统服务器端源码,供大家参考,使用了Inyd,UniDAC等控件
C#基础操作之读取文件到数据库,值得下载和练习
浙江省计算机三级数据库历年真题。
DBTOOLS支持ORACLE,MYSQL,SQLSERVER,POSTGRE,DB2数据库相互转换功能 目前支持中文和日文 ...企鹅群:数据库第三方工具交流 184715368 百度网盘下载地址: http://pan.baidu.com/s/1pCjPt (包含有视频讲解文件)
数据库第三版 课后习题答案 希望可以帮助到大家 O(∩_∩)O~