哪些东西不适合放到数据库
2015-06-21 12:50
453 查看
数据库层设计的好坏将极大的影响应用程序的性能,用户体验也与此息息相关。那么有哪些数据在应用程序开发中应当避免放大数据库中呢?
1. 图片,文件,二进制数据,如视频,音频等多媒体文件是最不应该放到数据库中的。
因为:
随着数据库的数据越来越多,数据库的备份和维护将越来越困难。
对文件的访问贯穿应用程序的多层结构,应用层,服务层,数据库层。
数据库读写的速度赶不上文件系统的处理数据
通常的做法是把它们存放大磁盘文件系统,而数据库中只存储它们的存放路径
2.短生命期数据
使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。使用redis,mongodbd或许更好
3.日志文件
把日志数据存放到数据库里,表面上看起来似乎不错,而且“将来也许我需要对这些数据进行复杂的查询”,这样的话很得人心。这样做并不是一个特别差的做法,但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。
也许你的日志记录做的很保守,每次web请求只产生一条日志。对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作,争夺你用户需要的数据库资源。所以说你数据库有多少余力来吞吐为了你可以做复杂查询、分析的日志数据和你存入数据库中的日志数据的量做一个权衡。
你既想要把日志数据存放到数据库,这样你可以利用数据库可以做复杂查询的优势帮你分析应用程序的问题所在,又不想过多的日志数据对数据库系统造成太大的压力,或许以下是个好办法,这也是我最近学习springAOP和拦截器联想到的。
利用springAOP或者拦截器结合自定义注解,将你想要输出日志到数据库的类、方法用注解标注,可以很容易完成对目标类方法调用的日志筛选,结合apo和拦截器对你想要作记录的用户,角色的活动记录存放到数据库。(或许表达不大明确,这个功能马上就来。。。)
1. 图片,文件,二进制数据,如视频,音频等多媒体文件是最不应该放到数据库中的。
因为:
随着数据库的数据越来越多,数据库的备份和维护将越来越困难。
对文件的访问贯穿应用程序的多层结构,应用层,服务层,数据库层。
数据库读写的速度赶不上文件系统的处理数据
通常的做法是把它们存放大磁盘文件系统,而数据库中只存储它们的存放路径
2.短生命期数据
使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。使用redis,mongodbd或许更好
3.日志文件
把日志数据存放到数据库里,表面上看起来似乎不错,而且“将来也许我需要对这些数据进行复杂的查询”,这样的话很得人心。这样做并不是一个特别差的做法,但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。
也许你的日志记录做的很保守,每次web请求只产生一条日志。对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作,争夺你用户需要的数据库资源。所以说你数据库有多少余力来吞吐为了你可以做复杂查询、分析的日志数据和你存入数据库中的日志数据的量做一个权衡。
你既想要把日志数据存放到数据库,这样你可以利用数据库可以做复杂查询的优势帮你分析应用程序的问题所在,又不想过多的日志数据对数据库系统造成太大的压力,或许以下是个好办法,这也是我最近学习springAOP和拦截器联想到的。
利用springAOP或者拦截器结合自定义注解,将你想要输出日志到数据库的类、方法用注解标注,可以很容易完成对目标类方法调用的日志筛选,结合apo和拦截器对你想要作记录的用户,角色的活动记录存放到数据库。(或许表达不大明确,这个功能马上就来。。。)
相关文章推荐
- PostgreSQL安装日志
- HTML5系列三(多媒体播放、本地存储、本地数据库、离线应用)
- SQL Server DBA三十问
- oracle 常见函数
- SQLiteDatabase
- oracle 集合的类型
- Oracle Hints详细解释
- oracle 模糊查询 like
- (转)MongoDb的十个使用要点
- (转)Mongodb相对于关系型数据库的优缺点
- slick与mysql
- redis翻译_redis lua脚本
- SQLHelper重构
- 记一次"诡异"的mongodb进程退出事件
- SQL数据库
- SQL语句的执行顺序
- Redis配置详解
- Redis配置详解
- 第一节 MongoDB介绍及下载与安装
- 数据库 三范式最简单最易记的解释