`
hbxflihua
  • 浏览: 691445 次
  • 性别: 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/

分享到:
评论

相关推荐

    很实用的端口接收数据并存储到数据库中的程序

    在IT领域,网络通信是不可或缺的一部分,而端口接收数据并将其存储到数据库中的程序设计则是网络编程中的重要环节。这个程序的标题“很实用的端口接收数据并存储到数据库中的程序”揭示了它的核心功能,即监听特定...

    全国中小学数据库大全mysql

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

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

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

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

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

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

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

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

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

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

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

    C# 利用log4net 把日志写入到数据库

    在本篇内容中,我们将深入探讨如何利用开源日志框架log4net将应用程序的日志信息记录到数据库中。 **一、log4net简介** log4net是一款广泛使用的、高度可配置的日志框架,它为.NET开发者提供了一套灵活的日志记录...

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

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

    WEB页面,一个上传Excel文件并将内容保存到数据库中

    在Web开发中,将用户上传的Excel文件读取并保存到数据库是一项常见的需求。这个项目实现了这个功能,提供了从头到尾的完整代码,对于学习和应用都非常有帮助。下面我们将详细探讨涉及的知识点。 首先,我们需要理解...

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

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

    计算机三级数据库历年真题及答案

    计算机三级数据库历年真题及答案,这是一份针对计算机三级考试中数据库部分的重要学习资源,主要包含历年来的考试真题及对应的答案解析。对于备考计算机三级考试,尤其是数据库技术这一块的考生来说,这份资料是极其...

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

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

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

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

    .net 三层+Wcf框架(自适应Oracle,Mysql,SqlServer三种数据库,完整实例)

    本实例中,该框架能够自适应Oracle、MySQL和SQL Server三种不同的数据库系统,这展示了其高度的灵活性和可扩展性。 三层架构,也称为N层架构,主要分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种...

    数据库第三方操作工具DBTOOLS

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

    C#保存图片到数据库。

    本篇将详细讲解如何利用C#将图片保存到SQLite数据库,以及如何进行查看、删除等操作。 首先,我们需要了解SQLite,它是一个轻量级的、开源的、嵌入式的关系型数据库,适用于桌面应用和移动设备。在C#中,我们可以...

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...

    世界国家城市级联数据库mySql,包含中日英三种语言切换,中国精确到省市县,国外精确到城市,适合国际化项目

    本文将详细介绍一个由腾讯官方提供的,支持中日英三种语言切换的MySQL数据库,其中国内数据精确到省市县,国外数据精确到城市,为国际化项目的实施提供了强大支持。 首先,该数据库的核心特性是其多语言支持。中文...

    java多个数据库实现数据同步

    数据同步是指在两个或多个数据库之间,当某个数据库中的数据发生改变时,这些变化能够被实时或者近实时地反映到其他数据库中。这有助于防止数据丢失和减少数据冲突,保证各个节点的数据一致性。 在Java中,实现多...

Global site tag (gtag.js) - Google Analytics