`
vipshichg
  • 浏览: 266731 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

对关系型数据库局限性的重新思考

阅读更多
在NoSQL的历史上有很多曲折反复,所有曲折进程和定义不明确算所带来的最不幸的一部分,就是失去了一些很有价值的东西。这篇帖子不是关于Nosql定义的不同,而是表明所有被归类为专属于无模式的的数据库世界中的巨大好处,也可以轻松应用到关系数据库世界中。
  忘掉迁移
  也许关于提到无模式数据库最大好处就是你只要一提交代码就它可以很好的工作。大约五年前Heroku发布 git push heroku master部署平台让你可以轻松的在git上面提交代码并让他工作,CouchDB 和 MongoDB在数据库方面做了样的事情。在你在数据库上工作时你没有必要运行 CREATE TABLE 或 ALTER TABLE进行迁移。你只要构建和发布你的程序而不用担心数据迁移是多么棒的事情啊。
# Assuming a column thats referenced doesn’t exist
# Automatically execute relevant bits in your ORM
# This isn’t code meant for you to run
ALTER TABLE foo ADD COLUMN bar varchar(255); # This is near instant
# Set your default value in your ORM
UPDATE TABLE foo SET bar = ’DEFAULT VALUE’ WHERE bar IS NULL;
ALTER TABLE foo ALTER COLUMN bar NOT NULL;
 
  这经常被看做是关系数据库的一个局限,然而其实没有必要。你可以看到即使在无模式的数据库中关系依然存在,只是你在应用层操作管理它。说在更高的框架层次或使用ORMs无法处理数据迁移过程是没有道理的。在今天,在没有引入当机时间和可以让开发者更快的迁移没有自动拷贝的数据的意义上,给关系数据库添加一个字段的过程还是很简单的。
  Rails/Django(你选用的框架)已经注意到让数据列存在的需求,适当的修改后你可以在你代码中像管理文档关系一样的方式使用它,当然这是一个共同的让人懊恼的的过程,但是说它不能被PostgreSQL完全处理和在ORM中不能直接处理它是没有道理的。
  文档
  其他一个强有力的说明例子是针对与MongoDB/CouchDB阵营的文档存储,在这个例子中我将给出文档直接转换为JSON对象的替代方案。JSON在移植性方面是一种很棒而又简单的数据模型,但在应用层你必须要转换它却也是一件很痛苦的事情。是的你看到的没错,Postgres现在有个JSON数据类型,而且JSON数据类型也不断的被一些其他的关系型数据库所采用。当我没有奢望她在JSON上的改进时, DB2对JSON的支持有点令我吃惊
  在数据列中存在JSON 格式是很有意义的,在你想把所有的结果当做整体JSON对象的时候,作为完全的JSON存储还是有点限制。Postgres 的一大买点就是你只用一个存储过程row_to_json就可以把一整行转换为JSON对象。
  还有就是你有一些高层框架可以利用,在它们的支持下,你可以一边让那些强类型的数据表存在,但一边你可以灵活地将他们映射到JSON对象,这样是很有意义的。
  出箱即用的接口
  这不是无模式数据库的专属特性,无模式的数据库中一些比如Couch 开箱即用特性多一点,另一些少一点。曝露一些rest 风格的接口的概念并不是新创的,不久前已经在关系数据库上实验过了。一些事情显然需要重申一下,这个例子清楚的表明,在重新构建操作界面和降低新手的入职门槛方面,确实降低了时间。
  不幸地是,现在对于Postgres 或其他关系数据库,并没有十足的进展。相反地其他数据库从一开始就提供这些接口。
  何去何从
  在无模式数据库或其他更广泛的数据库中,这种转变并不是很大,它们没有纳入更多的选择。然而同时这种转变有很多益处,最显著的一个就是,对传达怎么扩展所谓的”关系型数据库”产生了积极的影响。
9
7
分享到:
评论
1 楼 ray_linn 2014-03-14  
比如代码、文档,这些都是对数据库的滥用而已,这些是信息,不是数据。info 和 data完全不一样,info for read, data for caculation.

相关推荐

    四川地区高职院校数据库软件使用研究及思考.docx

    传统的基于ER分析的关系型数据库,如MySQL,尽管在某些场景下表现出色,但在处理大量数据、高并发请求时存在局限。因此,NoSQL数据库应运而生,它不遵循ACID原则,提供非关系型的分布式数据存储解决方案,以适应...

    xml 数据库教程 xml语法

    - **关系-对象映射**:通过对象关系映射(ORM)技术将XML文档转换为对象模型,再将这些对象映射到关系型数据库中。 - **5.2 查询语言** - **基于模板的查询语言**:使用预定义的模板来进行查询操作。 - **基于SQL...

    基于SPOC翻转课堂的创新Oracle数据库课程教学研究.pdf

    【Oracle 数据库】Oracle数据库是关系型数据库管理系统的一种,由甲骨文公司开发,广泛应用于企业级数据管理和分析。它支持复杂的数据类型,提供高度安全性和可扩展性,适用于大型分布式系统。Oracle数据库课程通常...

    关于记忆,大脑,链接的一些思考1

    3. **神经网络与关系型数据库模型**:大脑中的知识存储依赖于神经元之间的链接,这些链接形成了类似关系型数据库的结构。每个新知识需要与已有知识建立联系,这样才能在需要时快速检索。缺乏有效的链接,即使大量...

    数据库课程设计网吧管理系统.pdf

    在技术选型上,该系统选择了关系型数据库管理系统,如ACCESS2003或SQLSERVER2000,作为数据存储的基础。同时,开发环境使用了VB6.0,结合ACCESS2003,构建了一个C/S(Client/Server)架构的系统。ADO(ActiveX Data ...

    MongoDB的ruby 教程,太搞了

    内容中还隐含了作者对于“为什么构建MongoDB”这一问题的思考,尽管没有直接给出答案,但我们可以推测MongoDB被构建出来是为了填补当时数据库领域中某些需求的空缺,可能是为了提供一种新的存储解决方案,或者解决...

    基于行动导向的“Oracle数据库管理与维护”课程教学改革.pdf

    通过对企业的调研,确定了数据库管理员的主要职责,包括数据库的存储结构、客户端配置、网络配置、数据库实例的启动与关闭、数据备份与恢复,以及确保数据的安全性。为达成这些目标,课程设置了六个典型工作任务:...

    noSQL技术 Polyglot

    在实际应用中,NoSQL数据库可以与关系型数据库或其他类型的非关系型数据库混合使用,共同构建出一个既高效又灵活的数据管理平台。 #### 四、案例分析:NoSQLDistilled书籍内容提炼 《NoSQL Distilled》这本书由...

    《sql server数据库》实例教学与任务驱动相结合的教学模式研究.pdf

    SQL Server是微软公司推出的关系型数据库管理系统(RDBMS),被广泛应用于企业级数据库解决方案。因此,学习SQL Server数据库技术对于学生来说不仅是学习一个具体的数据库产品,更是掌握数据管理和处理的核心能力。 ...

    符合建构主义的Oracle屏幕录像课件体系设计.pdf

    【Oracle 数据库】Oracle 是一款广泛应用的企业级关系型数据库管理系统,尤其在大型企业和互联网公司中占据主导地位。它支持各种平台,包括PC、工作站、小型机、主机等,且Oracle公司是全球信息管理软件及服务的主要...

    对分库分表的一些想法

    文章接着讨论了关系型数据库的性能问题,并提出分库分表是解决这一问题的主流方案。分库分表分为纵向拆分和横向拆分两种方式。纵向拆分是指根据时间或者业务对数据进行分表,或者改变表结构进行拆分。这通常需要改变...

    进一步认识大数据(5).docx

    2. 数据库技术的变革:关系型数据库向非关系型和分布式数据库转变,如NoSQL数据库,以适应大数据的多样性和扩展性需求。 3. 数据处理技术的进步:实时交互数据处理技术的出现,如基于Hadoop的分布式计算框架,能高效...

    构建高性能Web站点_PDF_45.5M

    11.9 放弃关系型数据库 第12章 Web负载均衡 12.1 一些思考 12.2 HTTP重定向 12.3 DNS负载均衡 12.4 反向代理负载均衡 12.5 IP负载均衡 12.6 直接路由 12.7 IP隧道 12.8 考虑可用性 第13章 共享文件系统 ...

    构建高性能Web站点(PDF)

    11.9 放弃关系型数据库 第12章 Web负载均衡 12.1 一些思考 12.2 HTTP重定向 12.3 DNS负载均衡 12.4 反向代理负载均衡 12.5 IP负载均衡 12.6 直接路由 12.7 IP隧道 12.8 考虑可用性 第13章 共享文件系统 ...

    构建高性能Web站点(PDF)-第2部分

    11.9 放弃关系型数据库 第12章 Web负载均衡 12.1 一些思考 12.2 HTTP重定向 12.3 DNS负载均衡 12.4 反向代理负载均衡 12.5 IP负载均衡 12.6 直接路由 12.7 IP隧道 12.8 考虑可用性 第13章 共享文件系统 ...

    架构师面试题参考 (2).docx

    - Hibernate 是一款ORM框架,适用于关系型数据库,但在面对NoSQL数据库或非关系型数据模型时显得不适应。 2. **高性能搜索引擎的Web设计**: - 客户端优化:考虑JavaScript的性能、数据组织方式以及跨浏览器兼容...

    程序员如何提升为架构师

    - **示例**:NoSQL数据库相较于传统的关系型数据库,在处理非结构化数据时具有更高的灵活性和扩展性,但在事务支持方面则相对较弱。 4. **应用场景分析**:思考如何将这些技术应用于实际项目中。 - **示例**:...

Global site tag (gtag.js) - Google Analytics