`
hbxflihua
  • 浏览: 667788 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

三种东西从来不应该放到数据库中

阅读更多

图片、文件、二进制数据

数据库提供了对BLOB类型的支持,那把文件塞到BLOB类型里面就一定是正确的?这是不对的!毕竟,在许多数据库语言中处理大字段都不是很容易。

把文件保存在数据库中会有一些难题:

·   数据库的读/写速度总是比不上文件系统

·   数据库的备份越来越大,并且会消耗大量时间

·   对文件的访问需要穿越应用层与数据库层

后两点是真正的杀手!在数据库中保存缩略图?很好!但是,你将不能使用nginx或其他的轻量级web服务器来优化它们了!

给自己行个方便,在数据库里只简单的存放一个磁盘上你的文件的相对路径,或者使用S3CDN之类的服务。

短生命周期数据

使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。

使用redis statsd/graphite Riak等等,它们都是干这种事情更合适的工具。这建议也适用于对于收集那些短生命期的数据。

当然,用挖土机在花园里种土豆也是可行的,但相比起从储物间里拿出一把铲子,你预约一台挖土机、等它赶到你的园子里挖坑,这显然更慢。你要选择合适的工具来处理手头上的事。

日志

把日志数据存放到数据库里,表面上看起来似乎不错,而且将来也许我需要对这些数据进行复杂的查询,这样的话得到人们认可。这样做并不是一个特别差的做法,但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。

也许你的日志记录做的很保守,每次web请求只产生一条日志。对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作,争夺你用户需要的数据库资源。如果你的日志级别设置为verbosedebug,那等着看你的数据库着火吧。

你应该使用一些比如Splunk Loggly或纯文本文件来存放你的日志数据。这样去查看它们也许会不方便,但这样的时候不多,甚至有时候你需要写出一些代码来分析出你想要的答案,但总的来说是值得的。

可是稍等一下,你是那片不一样的雪花,你遇到的问题会如此的不同,所以,如果你把上面提到的三种东西中的某一种放到了数据库里也不会有问题。不,你错了,不,你不特殊。相信我!

 

原文出处:http://www.revsys.com/blog/2012/may/01/three-things-you-should-never-put-your-database/

分享到:
评论

相关推荐

    查找数据库中包含某字符的东西

    查找数据库中包含某字符的东西查找数据库中包含某字符的东西查找数据库中包含某字符的东西查找数据库中包含某字符的东西查找数据库中包含某字符的东西查找数据库中包含某字符的东西查找数据库中包含某字符的东西查找...

    java实现上传图片存入到数据库

    在Java编程中,将图片上传并存储到数据库是一项常见的任务,尤其在开发Web应用时。这一过程涉及到文件处理、数据库操作以及可能的图像处理。以下是对这个主题的详细阐述: 首先,我们需要理解基本的文件上传流程。...

    Qt从数据库中提取数据给变量赋值

    Qt中执行sql语句,当需要变量存取从数据库中获取的值,首先取出一行数据,然后按列将数据分别赋给变量

    全国中小学数据库大全mysql

    此数据库包含三个表: nobook_city :城市表 nobook_school:学校表 nobook_schooltype: 学校类型表 具体使用方式: 导入数据库后,通过省份城市及学校类型进行筛选,并且学校数据表已经设置首字母,所以可以根据首...

    使用Springboot上传图片并将URL保存到数据库中

    本示例将详细讲解如何实现一个简单的文件上传功能,将图片上传至服务器,并将图片的URL保存到数据库中。 首先,我们需要在Spring Boot项目中引入所需的依赖。对于文件上传,Spring Boot本身提供了`spring-boot-...

    sql-server中复制数据库某一个表到另一个数据库中

    在SQL Server环境中,有时我们需要将一个数据库中的某个表复制到另一个数据库中,这可能是为了备份、数据迁移或创建测试环境等目的。根据提供的标题、描述和部分代码内容,我们可以整理出一套较为完整的操作流程和...

    第三版.zip(数据库系统原理与设计第三版课后答案 )

    《数据库系统原理与设计》是计算机科学领域中一本经典的教材,尤其在数据库理论与实践方面具有广泛的影响力。这本书的第三版通常被众多高校选为计算机专业的必修课程教材,其内容深入浅出地介绍了数据库的基本概念、...

    通过JSP将数据库中的数据显示到网页上

    在本文中,我们将深入探讨如何使用Java Server Pages (JSP)技术从MySQL数据库中获取数据并将其呈现到网页上。JSP是一种动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,以实现服务器端的数据处理和交互。 ...

    三种东西永远不要放到mysql数据库里

    图片,文件,二进制数据永远不要放到mysql数据库里。很多人会觉得既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的! 别的先不提,在很多数据库语言里,处理大字段都不是很容易。...

    三层数据库系统服务器端源码

    三层数据库系统服务器端源码是IT领域中一种常见的软件架构设计,主要分为表现层、业务逻辑层和数据访问层。这种架构将应用的功能模块划分得更为清晰,有助于提高代码的可维护性和可扩展性。本资源包含的是用Delphi...

    java实现Excel数据导入到数据库

    在Java编程环境中,将Excel数据导入到数据库以及将数据库数据导出到Excel是常见的数据处理需求。本篇文章将深入探讨如何使用Java实现这两个功能,主要涉及的技术栈包括Apache POI库用于操作Excel,以及JDBC(Java ...

    上传图片到数据库

    在ASP.NET环境中,将图片上传至数据库是一种常见的需求,它涉及到文件处理、数据库操作以及Web交互等多个技术领域。本文将详细讲解如何实现这个功能,并在网页上展示已存储的图片。 首先,我们需要创建一个用于上传...

    Labview访问SQL server数据库三种方法

    Labview访问SQL server数据库三种方法: 1、基于配置ODBC数据源的方法访问SQL server; 2、基于建立ODBC连接的方法访问SQL server; 3、基于建立OLEDB连接的方法访问SQL server; 4、常用SQL语言;

    手写签名,可保存为图片或到数据库

    在IT行业中,手写签名是一种重要的身份验证和文档认可方式,尤其在电子文档和无纸化办公环境中。本文将深入探讨“手写签名,可保存为图片或到数据库”这一技术概念及其应用。 首先,手写签名是个人身份的直观表示,...

    数据库第三方操作工具DBTOOLS

    将数据库中的表结构和数据保存到EXCEL中。 2。将EXCEL中的数据,同步到数据库中。 3。当表结构发生变化时,数据不会丢失。 4。程序执行前后,表中的数据发生了哪些变化 5。根据EXCEL中的表结构,生成建表语句SQL文。...

    图片存储到数据库保存二进制文件,并在DATAGRIDVIEW中显示出来

    在C#编程中,将图片存储到数据库并以二进制数据的形式保存,以及在DataGridView控件中显示这些图片,是一项常见的任务。这种操作在处理大量图像数据时尤其有用,例如在开发一个需要展示产品图片的电子商务应用或者...

    C# WinForm DataGridView同步更新数据库 TreeView最简单的绑定数据库

    在C# WinForm开发中,数据可视化是至关重要的部分,特别是当涉及到用户界面与数据库之间的交互时。`DataGridView`和`TreeView`控件是.NET Framework提供的两种强大的UI元素,它们可以方便地展示和操作数据。本教程将...

    未能在 sysindexes 中找到数据库 ID 12 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。

    这表明数据库中的元数据可能已经损坏或者不一致。 ### 错误原因分析 出现该错误的原因可能有以下几种情况: 1. **数据库结构损坏**:数据库文件(如 `.mdf` 或 `.ndf` 文件)可能由于硬盘故障、电源问题或其他...

    jsp 上传图片并保存到数据库里的servlet代码和jsp代码

    本主题将深入探讨如何使用JSP和Servlet来实现一个图片上传功能,并将图片数据存储到Oracle数据库中。 首先,我们需要理解JSP和Servlet的角色。JSP是用于创建动态内容的视图层技术,而Servlet则是Java编写的应用程序...

    三级数据库

    "三级数据库"这一概念主要出现在...同时,"代码中国.txt"和"代码中国.url"可能是提供了一些关于编程和资源获取的信息,这部分虽然不直接属于三级数据库的范畴,但它们在数据库开发和学习过程中也是十分重要的辅助资料。

Global site tag (gtag.js) - Google Analytics