在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 或其他关系数据库,并没有十足的进展。相反地其他数据库从一开始就提供这些接口。
何去何从
在无模式数据库或其他更广泛的数据库中,这种转变并不是很大,它们没有纳入更多的选择。然而同时这种转变有很多益处,最显著的一个就是,对传达怎么扩展所谓的”关系型数据库”产生了积极的影响。
相关推荐
传统的基于ER分析的关系型数据库,如MySQL,尽管在某些场景下表现出色,但在处理大量数据、高并发请求时存在局限。因此,NoSQL数据库应运而生,它不遵循ACID原则,提供非关系型的分布式数据存储解决方案,以适应...
- **关系-对象映射**:通过对象关系映射(ORM)技术将XML文档转换为对象模型,再将这些对象映射到关系型数据库中。 - **5.2 查询语言** - **基于模板的查询语言**:使用预定义的模板来进行查询操作。 - **基于SQL...
FoxBASE不仅仅是一款数据库管理系统,它更是那个时代普及型数据库领域的一位重要角色,深受用户喜爱。 在计算机技术日新月异的今天,对于那些希望掌握FoxBASE数据库管理系统操作和应用的读者,一本名为《FoxBASE...
【Oracle 数据库】Oracle数据库是关系型数据库管理系统的一种,由甲骨文公司开发,广泛应用于企业级数据管理和分析。它支持复杂的数据类型,提供高度安全性和可扩展性,适用于大型分布式系统。Oracle数据库课程通常...
随着互联网的快速发展以及大数据时代的到来,传统的关系型数据库在面对海量数据时逐渐暴露出其局限性,如扩展性差、无法有效支持非结构化数据等问题。在此背景下,NoSQL(Not Only SQL)数据库应运而生。NoSQL数据库...
3. **神经网络与关系型数据库模型**:大脑中的知识存储依赖于神经元之间的链接,这些链接形成了类似关系型数据库的结构。每个新知识需要与已有知识建立联系,这样才能在需要时快速检索。缺乏有效的链接,即使大量...
在技术选型上,该系统选择了关系型数据库管理系统,如ACCESS2003或SQLSERVER2000,作为数据存储的基础。同时,开发环境使用了VB6.0,结合ACCESS2003,构建了一个C/S(Client/Server)架构的系统。ADO(ActiveX Data ...
内容中还隐含了作者对于“为什么构建MongoDB”这一问题的思考,尽管没有直接给出答案,但我们可以推测MongoDB被构建出来是为了填补当时数据库领域中某些需求的空缺,可能是为了提供一种新的存储解决方案,或者解决...
在实际应用中,NoSQL数据库可以与关系型数据库或其他类型的非关系型数据库混合使用,共同构建出一个既高效又灵活的数据管理平台。 #### 四、案例分析:NoSQLDistilled书籍内容提炼 《NoSQL Distilled》这本书由...
SQL Server是微软公司推出的关系型数据库管理系统(RDBMS),被广泛应用于企业级数据库解决方案。因此,学习SQL Server数据库技术对于学生来说不仅是学习一个具体的数据库产品,更是掌握数据管理和处理的核心能力。 ...
【Oracle 数据库】Oracle 是一款广泛应用的企业级关系型数据库管理系统,尤其在大型企业和互联网公司中占据主导地位。它支持各种平台,包括PC、工作站、小型机、主机等,且Oracle公司是全球信息管理软件及服务的主要...
文章接着讨论了关系型数据库的性能问题,并提出分库分表是解决这一问题的主流方案。分库分表分为纵向拆分和横向拆分两种方式。纵向拆分是指根据时间或者业务对数据进行分表,或者改变表结构进行拆分。这通常需要改变...
2. 数据库技术的变革:关系型数据库向非关系型和分布式数据库转变,如NoSQL数据库,以适应大数据的多样性和扩展性需求。 3. 数据处理技术的进步:实时交互数据处理技术的出现,如基于Hadoop的分布式计算框架,能高效...
早期的PostgreSQL版本主要采用传统分区表的方式,通过继承和触发器实现分区表关系,这种方法虽然灵活,但在维护和性能优化上存在局限。从PostgreSQL 10版本开始,官方引入了内置分区表,大大简化了分区表的使用,并...
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章 共享文件系统 ...
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章 共享文件系统 ...
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章 共享文件系统 ...
在数据库管理中,关系型数据库和非关系型数据库就像是植物茎的不同形态——圆形、方形和扁形。每种数据库模型都有其特定的优势和局限性,分别适应不同的应用场景。正如植物的茎需要适应不同的生长环境,数据库的设计...