刚刚看了《千万不要让关系数据库跟这十样事物掺合到一起》这篇文章,作为数据库方面的菜鸟,将其中的要点进行摘要整理,同时将一些概念单独拿出进行说明,方便日后回顾。
原文:http://www.infoworld.com/d/application-development/10-things-never-do-relational-database-206944
译文:http://database.51cto.com/art/201211/365272.htm
====================================
文章中说到的不应该与关系型数据库参合在一起的事物列举如下:
- 搜索 - 关键词:大多数 RDBMS 产品没能实现真正的搜索扩展
- 推荐 - 关键词:跨越式关系会让 RDBMS 非常被动
- 频繁交易 - 关键词:关系数据库在设计上并不适合这类任务
- 产品目录 - 关键词:产品数据映射采用字符映射方案是噩梦;采用图形类数据库,映射工作会变得简单易行
- 用户/群组与ACL - 关键词:“用户”与“角色”等表格在任何企业环境下都毫无必要的
- 日志分析 - 关键词:关系数据库的最大卖点及首要诉求时低延迟,而非日志分析及汇总工作
- 媒体资源库 - 关键词:RDBMS 中的 BLOB 仍然不足以有效处理图像及其它二进制文件
- 电子邮件 - 关键词:关系数据库并不擅长存储具有非结构化特性的元数据
- 分类广告 - 关键词:关系数据库不如文件类数据库 MongoDB 处理这类问题的能力
- 时间排序/预报 - 关键词:关系数据库在时间排序问题方面的表现一直饱受争议
====================================
【RAC】
RAC ,全称 real application clusters ,译为“实时应用集群”,是 Oracle 新版数据库中采用的一项新技术,是高可用性的一种,也是 Oracle 数据库支持网格计算环境的核心技术。
【PL/SQL】
PL/SQL 也是一种程序语言,叫做过程化 SQL 语言(Procedural Language/SQL)。PL/SQL 是 Oracle 数据库对 SQL 语句的扩展。在普通 SQL 语句的使用上增加了编程语言的特点,所以 PL/SQL 就是把数据操作和查询语句组织在 PL/SQL 代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。
【ATG】
ATG, Art Technology Group (ATG), a leading provider of eCommerce software and related on demand commerce optimization applications.
【BLOB】
BLOB ,binary large object ,二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB 常常是数据库中用来存储二进制文件的字段类型。BLOB 是一个大文件,典型的 BLOB 是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。根据 Eric Raymond 的说法,处理 BLOB 的主要思想就是让文件处理器(如数据库管理器)不去理会文件是什么,而是关心如何去处理它。但也有专家强调,这种处理大数据对象的方法是把双刃剑,它有可能引发一些问题,如存储的二进制文件过大,会使数据库的性能下降。在数据库中存放体积较大的多媒体对象就是应用程序处理 BLOB 的典型例子。
【CMS】
CMS ,即 Content Management System ,网站内容管理系统。
CMS 的功能并不只限于文本处理,它也可以处理图片、Flash 动画、声像流、图像甚至电子邮件档案。
CMS 其实是一个很广泛的称呼,从一般的博客程序,新闻发布程序,到综合性的网站管理程序都可以被称为内容管理系统。
====================================
【只言片语】
CouchBase 2.0 或者 MongoDB 属于文件数据库。
LDAP 专门为用户、群组及 ACL 所设计,能够恰到好处地满足此类需求。
像日志信息这样多少带有些非结构化特性的数据,正是 MapReduce 公司的 Hadoop 以及像 PIG 这样的语言所擅长的领域。
目前各类主流监控工具仍然在以 RDBMS 为主要对象。
电子邮件实际是一种具备适度非结构化特性的元数据。
文件类数据库 MongoDB 擅长搜索、打理元数据,非常适合处理广告的固有特性,对信息一致性有足够的保障。几乎等于是为广告量身打造的文件类数据库。
如果把时间类任务作为主要处理对象,那么像 Cassandra 这样能够与 MapReduce 列簇产品家族良好对接的方案无疑更为理想。
Redis 是一个单机的存储方案;Redis 不适合作为海量数据存储方案。Redis 适合在数据规模较小,性能要求较高的条件下应用。Redis 是一个非常快速和强大的 Key-Value 存储(持久化)系统,相对于一般的 NoSQL 存储系统,它最大的特点是支持丰富的数据结构。特别是其 zset(sorted set) 数据结构,堪称表达能力最强的结构之一( 其它强大的数据结构如 sorted hashmap ),可以直接地表达业务逻辑。