`
simplelife1
  • 浏览: 482 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

[摘录] 关系数据库难办的十件事

阅读更多
最近一段时间,准备认真关注并学习一下NOSQL,会陆续摘录一些资料到博客中。

对于RDBMS来说,在搜索、推荐、高频交易、产品编目、用户/用户组和ACL 、日志分析、媒体库、电子邮件、分类广告和时间排序与预测等方面或多或少存在一定的局限性。

1. 搜索
即使是最敬业的甲骨文专家也会尽量避免使用Oracle Text组件。尽管甲骨文公司斥资将其纳入自家数据库产品,但其实际表现相当乏善可陈。同时,很多用户还在使用like及or等命令实现复杂的查询工作,由此引发的结果自然是使用者抱怨满载、实际性能羸弱不堪。当然,甲骨文并不是惟一一家在搜索功能方面有所欠缺的厂商。在Hibernate Search、Apache Solr或者Autonomy的帮助下,我们能够获得更好的检索性能表现。别犹豫,让它们成为大家全文本搜索工作中的有力助手吧。

2. 推荐
产品会追踪使用者的大量日常信息,并尝试推荐用户可能需要的其它产品。大家不妨设想社交网络的运行情况,如果希望某位用户能够购买他(她)的朋友以及朋友的朋友所选购的袜子,这种跨越式关系会让RDBMS非常被动。要实现这一诉求,需要采用自连接表格与多查询层。这很像是Neo4j等图形类数据库中的两行代码。虽然大家可以通过对社交网络架构的预扁平化及数据临时调整达成目标,但这也会令关系数据库失去其实时性。

3. 频繁交易
大家可能会以为交易系统是RDBMS的长项所在,因为数据多少都会蕴含一些交易属性。频繁交易活动中,低延迟是最关键也最宝贵的因素。没错,如果大家跳出固有思路,也能在RDBMS中获得较低的延迟效果——但还是提醒各位,关系数据库在设计上并不适合这类任务。
甲骨文公司试图通过收购TimesTen来解决这一难题,后者一直在努力将内存数据库与RDBMS相结合——然而上车就算加了翅膀也不会变成飞机,我们只能把这看作一定程度上的小小改善。相反,我们倒是发现很多频繁交易操作者自发选择Riak等键-值方案甚至是更为复杂的Gemfire。

4. 产品目录
手机这东西大家都知道,同一个型号“XYZ”有可能代表着多款机型,而且这些机型在不同的市场中还被赋予了不同的“昵称”。甚至同一款机型也会使用多种差异化组件。要想对这类复杂而模糊的“类”进行扁平化处理简直难于登天,因此在处理此类工作时,以Neo4j为代表的图形类数据库就成了上上之选,甚至像CouchBase 2.0或者MongoDB这样的文件数据库都比关系数据库表现得更好。

5. 用户/群组与ACL
在某种角度来看,LDAP其实就是最原始的NoSQL数据库。LDAP专门为用户、群组及ACL所设计,能够恰到好处地满足此类需求。遗憾的是,很多人都出于误解而将其作为新技术的衍生品,企业也试图用它来处理某些荒谬甚至可怕的任务。还有不少公司用它建立起一套官僚意味浓厚的管理机制,许多开发人员为了免受影响只能被迫通过篡改数据库表格来维护日常工作流程。这显然有违集中式用户访问控制的初衷。

6. 日志分析
如果大家还不清楚这方面问题的危害,不妨打开Hadoop或者小型集群服务器版本RHQ/JBossON中的日志分析功能,设定日志级别、让日志捕捉除错误之外的其它信息。执行过程越复杂、我们的工作状态也就越混乱。可以看到,像日志信息这样多少带有些非结构化特性的数据,正是MapReduce公司的Hadoop以及像PIG这样的语言所擅长的领域。然而我们遗憾地看到目前各类主流监控工具仍然在以RDBMS为主要对象——关系数据库根本不需要这么多分析及汇总工作,低延迟才是其最大卖点及首要诉求。

7. 媒体资源库
虽然保存元数据的效果还算可以(其实Couchbase 2.0或者MongoDB在这方面表现更好),不过RDBMS中的BLOB在经过了多年的演变后仍然很不给力。大家最好为自己的图像及其它二进制文件选择某种类型的分布式存储方案或集群文件系统。尽管表现令人失望,许多CMS引擎仍然会把一切存储任务都推给RDBMS,这也是大家需要注意的一点。

8. 电子邮件
电子邮件实际是一种具备适度非结构化特性的元数据,而关系数据库并不擅长存储这类资料。电子邮件管理工作涉及到元数据、搜索以及内容,这些东西之间并没有明显的关联代数可供参考,而且与交易扯不上关系。关系数据库本身的文件系统没有问题,只是文件类数据库在处理元数据时表现更出色。

9. 分类广告
广告是一种规模庞大的信息集合,海量用户查询及发布这类数据,其内容短小却极具吸引力。Craigslist这家知名广告网站使用的正是文件类数据库MongoDB,它擅长搜索、打理元数据、非常适合广告的固有特性,连信息一致性也有足够的保障。面对几乎等于是为广告量身打造的文件类数据库,RDBMS最好的选择就是绕道而行。

10. 时间排序/预报
这一点在本文的十大排行中最具普遍性,但其具体表现形式却多种多样,从商品到数据分析再到太阳黑子预测都包含在内。关系数据库在时间排序问题方面的表现一直饱受争议。当然,现在情况已经大大改善;而且经过过去十几年的努力,RDBMS在与时间有关的处理效率及功能方面已经摆脱了严重缺陷的尴尬境地、取得了令人瞩目的进步。然而如果大家把时间类任务作为主要处理对象,那么像Cassandra这样能够与MapReduce列簇产品家族良好对接的方案无疑更为理想。Datastax公司已经明显指出,其Cassandra发行版将支持时间排序数据;其它一些供应商也纷纷在产品中推出类似功能。

对于NOSQL来说,目前其产品主要有四大类:
1.key-value存储
Examples:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB
典型应用场景:内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等
数据模型:Key 指向 Value 的键值对,通常用hash table来实现
强项:查找速度快
弱项:数据无结构化,通常只被当作字符串或者二进制数据

2.列式数据库
Examples:Cassandra, HBase, Riak
典型应用场景:分布式的文件系统
数据模型:以列簇式存储,将同一列数据存在一起
强项:查找速度快,可扩展性强,更容易进行分布式扩展
弱项:功能相对局限

3.文档型数据库
Examples:CouchDB, MongoDb
典型应用场景:Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)
数据模型:Key-Value对应的键值对,Value为结构化数据
强项:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构
弱项:查询性能不高,而且缺乏统一的查询语法

4.图结构数据库
Examples:Neo4J, InfoGrid, Infinite Graph
典型应用场景:社交网络,推荐系统等。专注于构建关系图谱
数据模型:图结构
强项:利用图结构相关算法。比如最短路径寻址,N度关系查找等
弱项:很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。
分享到:
评论

相关推荐

    自己摘录加总结的一些数据库技术

    数据库技术是IT领域中的核心部分,它涉及到数据的存储、管理、检索以及更新。这里将对标题和描述中提到的一些关键知识点进行详细阐述。 首先,我们来看ADO(ActiveX Data Objects),这是微软提供的一个用于访问...

    Oracle数据库学习指南

    1. 《Oracle8 优化技术》摘录 (第一章 安装) 2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. ...

    国际最新数据库SQL标准的相关研究.pdf

    3. 关系数据库的历史发展:文章回顾了关系数据库的发展历程,包括Ted Codd对关系代数的研究和关系数据模型的提出。这个发展过程反映了学术界和工业界在数据库技术上的创新和进步。 4. ISO制定数据库标准的目的:SQL...

    webservice摘录webservice摘录

    webservice摘录webservice摘录webservice摘录webservice摘录webservice摘录webservice摘录webservice摘录webservice摘录webservice摘录质

    PHP与MySQL数据库 WEB开发教程.zip

    接下来,MySQL是一个关系型数据库管理系统(RDBMS),在Web应用中用于存储和管理数据。它以其高效、稳定和易于管理的特点而闻名,尤其适合中小型企业级项目。PHP与MySQL的结合,让开发者可以快速地对数据库进行读写...

    学习记录_中级软件工程师软件工程师_数据库

    本文件是中级软件工程师在学习过程中针对Oracle数据库所做的详细笔记与总结,包括了对著名博客文章的摘录和个人学习心得等内容。这些内容不仅覆盖了Oracle数据库的基础知识,还涉及到了一些高级应用技巧,是中级软件...

    对数据库英语很有帮助

    根据提供的信息来看,虽然标题和描述提及了“对数据库英语很有帮助”,但实际内容并未涉及具体的技术或数据库相关的知识,而是包含了一系列富有哲理的生活态度和思考方式的语句。因此,我们将基于这部分内容尝试提炼...

    Unix下基于OCI的Oracle数据库的访问.pdf

    关键词包括“Oracle”,作为关系型数据库管理系统(RDBMS)的代表,Oracle数据库在全球范围内被广泛应用于企业级应用,特别是对于需要高安全性和稳定性的场合,如金融、电信和国防等领域。另外,“OCI”指的是Oracle...

    数据库营销介绍最终.ppt

    名址中心不仅处理内部邮政业务数据,还通过各种途径,如调查问卷、公开资料摘录、商业名录购买、活动采集和基础地址采集,来丰富和完善数据库。这样的数据涵盖了全市乃至全国的各类基础地址、组织机构和个人信息,为...

    JDBC系列数据库教程

    JDBC (Java Database Connectivity) 是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 提供了一种基准,据此可以构建更高级的工具和接口,...

    UML摘录小结.doc

    《UML 摘录小结》 UML,全称为Unified Modeling Language,是一种标准化的通用建模语言,主要用于软件开发过程中的系统描述、可视化、构造和文档化。UML的诞生是为了统一Booch、Rumbaugh和Jacobson等人的表示方法,...

    化学文摘数据库检索方法.ppt

    《化学文摘数据库检索方法》是关于如何有效利用化学文摘数据库进行科研信息查询的教程。化学文摘数据库,简称CA,是由美国化学会文摘社(The Chemical Abstracts Service)自1907年开始编辑出版的重要参考资料。该...

    中国天津邮政2010年数据库营销介绍.ppt

    名址中心的工作涵盖了从数据采集(如邮政业务数据、问卷调查、公开信息摘录、购买商业名录等)到数据应用的全过程,与其它部门紧密合作,共同实现数据库的价值。 天津邮政拥有的数据资源丰富多样,包括全市和全国的...

    Delphi 使用表达式进行数据库查询操作范例.rar

    下面是摘录的一些代码片段:  Com_y : integer;//Commond控件的Top调整. 默认35  CRect : TRect; //光标位置  {1}procedure SelectText(Sender: Tobject); //返回在Combobox控件中选择的信息.  {2}Function ...

    数据库设计专业课程设计项目说明指导书模板.doc

    设计的关键内容和目标应明确指出要解决的问题,例如在上述摘录中,提到的是针对芯片制造商的销售管理难题,通过联机分析处理(OLAP)来优化销售配额设定、业绩考评和市场需求预测。这要求学生具备数据抽取、清洗、转换...

    摘录转载sql语句大全

    SQL是Structured Query Language的缩写,是用于管理和处理关系型数据库的标准语言。本文摘录了几个关键的SQL优化技巧,旨在帮助用户写出更高效、性能更佳的查询语句。 1. **选择最有效的表名顺序**:在ORACLE数据库...

    db2常用命令——摘录

    DB2 是一款由 IBM 开发的关系型数据库管理系统(RDBMS),广泛应用于企业级的数据存储和管理。在日常管理和维护DB2数据库时,熟练掌握一些常用命令是非常必要的。以下是DB2的一些关键命令及其详细说明: 1. **打开...

    融合数据库技术_滴滴出行.pdf

    标题“融合数据库技术_滴滴出行”和描述表明本文探讨了滴滴出行如何在其业务中实践和融合数据库技术,特别提到了对开源MySQL的使用、融合数据库的尝试以及相关的技术创新。从内容摘录中可以提炼出以下知识点: 1. ...

Global site tag (gtag.js) - Google Analytics