当前位置: 首页 > 科技观察

牢记这三点,千万不要放到数据库中

时间:2023-03-18 13:18:14 科技观察

我在很多演讲中都说过,改善你的系统最好的方法就是先避免做“傻事”。我不是说你或你开发的东西“愚蠢”,而是有些决定很容易被人们忽视,人们没有意识到它会给系统维护,尤其是系统升级带来多大的麻烦。作为一名顾问,这样的事情我比比皆是,从来没有见过做出这样决定的人会有好的结果。图片、文件、二进制数据既然数据库支持BLOB类型的数据,那么往BLOB字段里塞文件肯定没有错!?错了,不是这样的!别的不说,在很多数据库语言中,处理大字段并不是一件容易的事。在数据库中存储文件有很多问题:读取/写入数据库的速度永远赶不上文件系统处理的速度。数据库备份变得庞大而且越来越耗时。访问文件需要遍历你的应用层和数据库层。后两者才是真正的杀手。将图像缩略图存储在数据库中?太好了,那么你不能使用nginx或其他类型的轻量级服务器来处理它们。帮自己一个忙,只需将文件的相对路径存储在数据库中的磁盘上,或者使用S3或CDN之类的东西。短期数据使用统计、测量数据、GPS位置数据、会话数据,任何仅在短时间内对您有用或经常变化的数据。如果您发现自己使用cron作业从表中删除仅在一个小时、一天或几周内有效的数据,那么您就没有做对。使用redis、statsd/graphite、Riak,都是比较适合这种东西的工具。此建议也适用于那些收集短期数据的人。当然,用反铲在后花园种土豆也是可行的,但比起从储藏室拿铲子,你预留一个反铲,等着它冲到你的花园里挖坑。这显然更慢。为手头的工作选择合适的工具取决于您。日志文件将日志数据存储在数据库中,表面上看起来很好,“也许我以后需要对这些数据进行复杂的查询”很流行。这样做并不是特别糟糕的做法,但如果您将日志数据和生产数据存储在一个数据库中,那就非常糟糕了。也许您的日志记录比较保守,每个Web请求只生成一个日志。这仍然会为网站上的每个事件生成大量数据库插入,从而争夺用户所需的数据库资源。如果您的日志级别设置为详细或调试,请注意您的数据库着火。您应该使用SplunkLoggly或纯文本文件之类的东西来存储您的日志数据。这样看可能不方便,但是这样的次数不多,有时需要自己写一些代码来分析出自己想要的答案,但总的来说还是值得的。但是等一下,你就是那片不同的雪花,你的问题也会如此不同,所以如果你把上面提到的三种东西中的一种放在数据库中,你就会没事的。不,你错了,不,你并不特别。相信我。博文来源:http://blog.csdn.net/gao_chun/article/details/46342613