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

HAHA数据库查询软件(基于ODBC) 1、基于ODBC驱动的HANA数据库(针对SAP系统)查询小工具。 2、C#编写,提供源代码和调用的所有类库。 欢迎下载使用和交流探讨! 立即下载
我已经在很多演讲里说过,改进你的系统的最好的方法是先避免做“蠢事”。我并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含 的牵连,认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好 的结果的。
图片,文件,二进制数据

既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的!别的先不提,在很多数据库语言里,处理大字段都不是很容易。

把文件存放在数据库里有很多问题:
对数据库的读/写的速度永远都赶不上文件系统处理的速度
数据库备份变的巨大,越来越耗时间
对文件的访问需要穿越你的应用层和数据库层

这后两个是真正的杀手。把图片缩略图存到数据库里?很好,那你就不能使用nginx或其它类型的轻量级服务器来处理它们了。

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

使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。使用redis, statsd/graphite, Riak,它们都是干这种事情更合适的工具。这建议也适用于对于收集那些短生命期的数据。

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

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

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

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

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

[本文英文原文链接:Three things you should never put in your database ]


连接:http://www.oschina.net/news/28955/three-things-you-should-never-put-your-database

Elisp入门(叶文彬).pdf Emacs,著名的集成开发环境和文本编辑器。Emacs被公认为是最受专业程序员喜爱的代码编辑器之一。 本文档为Emacs所使用的脚本语言(Elisp)的参考手册,使用Elisp可以扩展Emacs的功能。 立即下载

相关推荐

emacs-websocket:elisp 中的 websocket 实现,用于 emacs

警告 如果您遇到缺少master分支的问题,请注意我已将master分支重命名为main 。 请查看以下相关错误: 对破损表示歉意,我们希望这将很快得到解决。 描述 这是一个 elisp 库,用于 websocket 客户端与 websocket 服务器通信,以及用于 websocket 服务器接受来自 websocket 客户端的连接。 该库旨在供其他库编写者使用,用于编写使用 websockets 的应用程序,并且本身没有用。 如何使用该库的示例在文件中。 该库与 emacs 23 和 24 兼容,尽管只有 emacs 24 支持安全的 websocket。 版本发布清单 发布的每个版本都应使用以下清单进行检查: [ ] 所有 ert 测试通过 [] 在 emacs 23 和 24 上通过的功能测试 [ ] websocket.el 字节编译干净。 现有客户: 如果您将此模块

mysql 修改表结构提示 MySQL said: Table is read only

今天给一个客户搬家网站后网站后台登陆不了,数据库导入和用户都是正常的,登陆信息验证失败 网上查询可能是数据库没有权限,测试用注册新会员提示 数据表提示只读:MySQL said: Table is read only 1、找到mysql 数据库目录,并修改权限 chmod -R 0777 /usr/local/mysql/var/hkdb    #hkdb是我网站的数据库文件夹 2...

My Server 484

在web应用中附件是否要存储在数据库

这篇论文讨论了在当今的web应用中,上传的附件是存储在SQL Server上还是文件系统上比较好

SAP HANA 数据库 -- 小白学习之路(四)

这篇博客记录了如何创建租户数据库。之前提到过系统数据库(systemdb)用于管理,租户数据库(tenantdb)用于存储、处理数据。因此,首先登录系统数据库,创建租户数据库成功后,再通过客户端连接。

hqlswc的博客 2085

c语言 malloc 源码详解,dlmalloc源码剖析之:mALLOc

/*如果你使用linux, douglea malloc已经默认作为glibc的malloc,新的版本可能用的是ptmalloc(dlmalloc的多线程版本)如果你用的bsd4.2及以前系统libc用的kingsley的malloc;BSD(包括freebsd,netbsd,openbsd)4.2以后版本libc用的是PHKmalloc;如果你用的windows系统用的是microsoft的分配...

weixin_29541743的博客 1126

dlmalloc源码剖析之:mALLOc

dlmalloc源码剖析之:mALLOc版权声明: 本文章由vt.buxiu发布在www.vtzone.org,版权归vtzone研究小组所有,转载请保持此声明!!! @@内容摘要:这个函数应该是所有使用C/C++的人最熟悉的malloc调用的实现,c语言标准库提供的malloc函数.如果你使用linux, douglea malloc已经默认作为glibc的malloc,新的版本可能用

vt.buxiu技术文集 2174

malloc源码剖析

对malloc的源码剖析源于我自己实现的共享内存分配器,使用buddy算法和红黑树结构实现对共享内存的分配回收管理,对其性能进行测试的时候,发现性能只有malloc的1/3~1/2,原本以为自己的实现性能应该比malloc高的,结果出乎意外,这让我产生窥探dlmalloc源码的好奇心,为此,找到http: //www.malloc.de/malloc/ptmalloc2.tar.gz的源代码进行分

overcomeunicom的专栏 4933

malloc的源码剖析源

对malloc的源码剖析源于我自己实现的共享内存分配器,使用buddy算法和红黑树结构实现对共享内存的分配回收管理,对其性能进行测试的时候,发现性能只有malloc的1/3~1/2,原本以为自己的实现性能应该比malloc高的,结果出乎意外,这让我产生窥探dlmalloc源码的好奇心,为此,找到http:

SmartWan的专栏 8301

doug lea malloc源码剖析之:sYSMALLOc

 dlmalloc源码剖析之:sYSMALLOc版权声明: 本文章由vt.buxiu发布在www.vtzone.org,版权归vtzone研究小组所有,转载请保持此声明!!! @@内容摘要:       sYSMALLOc函数用于合并fastbin中的空闲内存块,是doug lea malloc(dlmalloc)重要的函数之一。本文以dlmalloc2.7.0版本为基础,先以伪代码的形式

vt.buxiu技术文集 2757

doug lea malloc源码剖析之:malloc_consolidate

流行分配器dlmalloc剖析之:malloc_consolidate版权声明: 本文章由vt.buxiu发布在www.vtzone.org,版权归vtzone研究小组所有,转载请保持此声明!!! @@内容摘要:       consolidate_fastbin函数用于合并fastbin中的空闲内存块,是doug lea malloc(dlmalloc)重要的函数之一。本文以dlmalloc

vt.buxiu技术文集 2075

Redis内存管理终极指南:jemalloc vs dlmalloc性能深度对比

Redis作为一款高性能的内存数据库,其内存管理机制直接影响着系统的稳定性与响应速度。本文将深入剖析Redis采用的两种内存分配器——jemalloc与dlmalloc的核心差异,帮助开发者理解Redis内存管理的底层逻辑,掌握优化Redis性能的关键技巧。 ## 内存分配器:Redis性能的隐形引擎 🚀 在Redis的架构设计中,内存分配器扮演着"幕后英雄"的角色。它们负责管理Redis

gitblog_00704的博客 776

malloc相关

 _malloc-_free模拟 - 网络开发技术研究,纯技术网 - JavaEye技术网站http://lin-style.javaeye.com/blog/256146求函数malloc的实现源代码~ C-C++ - C语言 - CSDN社区 community_csdn_nethttp://topic.csdn.net/t/20051114/18/4392766.html

pocketmatrix的专栏 574

dlmalloc 2.8.6 源码详解—[4]分配及实现

转载自:vector033 分配及实现本章节介绍dlmalloc的分配算法和实现.由于存在多mspace的情况, dlmalloc使用了两套API.一套对应默认的mspace,以dl前缀开头,如dlmalloc, dlrealloc等.如果创建了自定义的mspace,则使用mspace开头的API,如mspace_malloc, mspace_realloc等.但两套API在基础算法上是一致的.我们

杏林小轩 1560

嵌入式运维态内存泄漏检测与dlmalloc监控实践

内存泄漏是嵌入式系统长期运行中导致性能劣化、偶发死机的核心问题,其本质是动态内存分配后未正确释放,引发堆空间持续增长与碎片化。基于dlmalloc等轻量级堆管理器的运行时统计机制(如mallinfo、malloc_stats),可实现低开销、非侵入式的内存水位观测。该技术无需调试器或符号表,适用于资源受限的现场环境,具备工程落地所需的轻量性(<2KB RAM)、实时性(μs级钩子开销)和可追溯性(文件/行号级分配记录)。典型应用场景包括工业网关、车载T-BOX、智能电表等需7×24运行的嵌入式设备,尤其适配

weixin_42453228的博客 170

C语言标准库源码阅读指南:从黑盒到白盒的进阶之路

在计算机编程领域,理解底层库的实现原理是提升开发能力的关键。标准库作为连接应用程序与操作系统的桥梁,其设计体现了核心的软件工程思想,如缓冲机制、内存管理和错误处理。通过剖析标准库源码,开发者可以深入掌握系统级编程的精髓,例如性能优化策略和资源管理技术。这种从概念到原理的探索,不仅揭示了函数调用的内部工作机制,还能帮助解决实际开发中的内存错误和性能瓶颈问题。特别是在学习工业级代码范本时,阅读glibc和musl libc等实现能强化对可移植性和安全边界的认知。无论是进行嵌入式开发还是优化高并发应用,源码分析都

weixin_34348174的博客 352
上一篇: Window下拖放操作Drag & Drop 全解析
下一篇: 从exe中读取版本信息
tszhao
博客等级 码龄18年 36粉丝 49原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值