postgresql存图片字段类型_PostgreSQL让人着迷的多态性,另辟蹊径省时又省力

PostgreSQL 让人着迷的地方,不在于他比某些数据库的流行,也不在于比某些数据库的高“贵”, 更不如某些数据库的“简单”。Postgresql 让人无法自拔的是他的”多端变化”, 用开发的角度来说,叫多态性。

dea064696ae60ea7c150cc086a618b3f.png

PG本身支持着太多的数据的类型充分体现了他的多态性,其中hstore数据类型,这是一种以键值为目的的数据存储和提取的方式。在非结构化,半结构化数据横行的今天,除了MONGODB 让人“羡慕嫉妒恨”,以外能想到的好像也只有PG了,在支持json, josnb下的PG另类hstore数据类型是否多余,还是对多种应用提供了更良好的支持,的需要去check一下。

先建立一个POSTGRESQL 的hstore类型,是骡子,还是千里马,的出来溜溜。

f65123639e7c5d3302244fcb1f3f386a.png

我们插入一条数据

insert into hstore_test (id,name,history) values (1,'postgresql','from => "IBM_Research",origination => "inges",time => "1970"')

06107d2cf524ad2aa37d0a83cd5da095.png

可以看到与JSON 格式对比,hstore 在处理比较随意的数据上,也是有点意思。

SELECT name, history->'from' as history FROM hstore_test WHERE history->'origination' = 'inges';

a3c299ee02ef66217f019a3f96fb072e.png

想必做到这里,如果是开发人员,会觉得有点意思,并且是骡子,是千里马,反正不是“驴”。从开发人员的角度,这样处理数据的方式,键值不要太随便。

说道这时候,估计马上会有人跳出来,这不科学呀,这怎么加索引,这怎么在大数据量下查询,这就是“儿戏”。

普及一下POSTGERSQL 的“科学”, 因为POSTGRESQL 的索引类型从来不贫瘠, GIN GIST 索引类型,妥妥的支持这样变态的类型,一个能让%like% ,都能走索引,百万数据毫秒出结果的数据库,怕过谁。

那具体在数据库的维度上,问题的关注点可能会转移到,是否有什么案例可以说明这个数据库的字段类型(或许叫字段类型表达不了,这个类型的内涵),在实际当中的意义。

首先有需要声明

这个类型不是要代替或者与JSON 类型进行竞争,换句话hstore 类型是JSON,JSONB 的一种有益的补充,当你在产生某些数据的情况下,无法对其进行合理的二维表格以及关系的描述,或者你的数据不存在嵌套的关系,或需要处理复杂的嵌套关系。在这样的情况下还有一些,非传统的二维表格的需求。hstore 其实是一个很好的补充和支持。

那下面就举一个例子:

例如我们有一个在线介绍家用汽车的网站,我们其中的每种汽车,其实都可能有很多熟悉

我们一边建表,一边来举这个例子

create table car_info(

id serial primary key,

productor varchar(20),

car_name varchar(50),

product_time timestamp,

car_type smallint,

tag hstore

);

fc2a25f7707133f2ff46407d86e54925.png
702710454a09abeec6e3272e2dd7f352.png

这里hstore存储的数据其实是可以通过json + mongodb的方式来进行数据存储,毋庸置疑的是MONGODB 在JSON处理上的能力,以及便捷性,尤其对待要求数据量巨大,并且对处理的速度要求很高的情况下,MONGODB可以说是JSON里面的唯一选项。

那这里POSTGRESQL的 hstore 扮演了一个什么样的角色

1 在传统数据库表里面会涉及到一些,非结构化的数据

2 在某些需求不明确,但需要为了争取市场,快速上线(比如这个tag ,其实可能需求方面会一直变化,某一种车的标签会随着市场,销售情况,以及车商,等等诸多原因进行变化,而使用其他数据库的任何字段类型来处理这样的情况要不就是不合适,要不就是太麻烦)

3 所以postgresql 的 hstore 是在数据量较少,介于想使用MONGODB,但又没有特别大的需求和数据量的情况下,需要灵活应对项目中的需求变动频繁时的一个好的技术方法,来规避后期的频繁改动表结构,字段长度,以及一些,让需求,开发,运维都头痛的后续工作。

所以POSTGRESQL 的 hstore 是一个在传统数据库中,非结构化,半结构化的良好的解决方案。

8945d2167fe2668f935933a633380bde.png

我们还可以在这个字段上加索引,并且方便的更新,或删除数据,这些功能在其他的数据库上是很难相信能够做到的。

82c93494e5752a2b8dd83c33d362cad4.png

当然这个类型还有很多的功能,感兴趣的可以去check 一下,也许会在某些项目上帮到你,快速的满足需求,并且省时省力, 借用《我的前半生》,贺函风格的一句话, 作为一个DB的工作者, 你的职责是服务于你的公司,提供专业的,更高效的数据库去为企业服务,加速程序开发速度,降低开发中程序员遇到的困难,并解决他,哪种数据库不是重点,重点是解决问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机怎么查看U盘品牌,如何查看电脑u盘使用

如何查看电脑u盘使用其实笔记本设置U盘启动也并不困难,小编这就教你怎样设置U盘启动!全是硬货!第一步:我们先把U盘插入笔记本的USB接口上,(注意:请不要通过USB延长线来连接笔记本)插上U盘后重启笔记本本。电…

Maven补全之生命周期(Lifecycle)

Maven补全之生命周期(Lifecycle) Maven生命周期基础概念 Maven是基于生命周期构建的,一个Maven项目的构建是已经被清晰定义的过程。 对于我们使用Maven构建项目来说,POM.xml文件可以确保我们得到自己想要的项目(项目名&#xff0c…

善用封盖

不久前,在博客文章中 ,我解释了Groovy中的Closure。 这篇博客文章将解释一个使用它们的好例子。 最近,我发现自己不得不为服务AJAX请求的大量后端Controller API编写相同的异常处理逻辑。 就像这样: class ApiRugbyPlayerControl…

12款精美的免费 HTML 网站模板下载

这篇文章收集了12款精美的免费HTML网站模板分享给大家,您可以免费下载使用。相信这些漂亮的HTML网站模板既能够帮助您节省大量的时间和精力,又能有很满意的效果。感谢那些优秀的设计师分享他们的劳动成果,让更多的人可以使用他们的创意设计&a…

两个数相乘积一定比每个因数都大_小升初数学知识点大全含公式+20类必考应用题(含答案解析),孩子考试一定用得上!...

小升初数学知识点大全含公式一、几何图形周长、面积和体积公式*三角形的面积=底高2。S ah2正方形的面积=边长边长 S a长方形的面积=长宽 公式 S ab平行四边形的面积=底高 S ah梯形的面积=(上底下底)高2 S(ab)h2内角和&…

WPF自定义TabControl样式

WPF自定义TabControl样式 原文:WPF自定义TabControl样式WPF自定义TabControl&#xff0c;TabControl美化 XAML代码&#xff1a; <TabControl x:Class"SunCreate.Common.Controls.TabControlEx"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentat…

H.264分层结构与码流结构

H.264分层结构 H.264编码器输出的Bit流中&#xff0c;每个Bit都隶属于某个句法元素。句法元素被组织成有层次的结构&#xff0c;分别描述各个层次的信息。 在H.264 中&#xff0c;句法元素共被组织成 序列、图像、片、宏块、子宏块五个层次。在这样的结构中&#xff0c;每一层…

20个很酷的CSS3导航菜单制作教程

CSS3 是对 CSS 规范的一个很大的改善和增强&#xff0c;它使得 Web 开发人员可以很容易的在网站中加入时尚的效果。以前很多需要编写 JavaScript 才能实现的效果&#xff0c;如今只需要简单的写几句 CSS3 代码就能实现。今天这篇文章就向大家推荐20个很酷的CSS3导航菜单制作教程…

金算盘高手论坛资料中心_3D006期 菜鸟论坛精英PK专栏 速来围观!!

点上方“菜鸟选号论坛”→点右上角“...”→选“星标★”每日上午更新&#xff0c;星标置顶与大神不走散苹果是置顶&#xff0c;安卓是星标 点击"菜鸟选号论坛"关注我们论坛明星版块&#xff0c;集全网各路高手之大乘&#xff0c;打造草根明星 展示舞台。同时主要是为…

非常酷!10个基于 HTML5 的字体应用演示网站

HTML5 是现在Web开发领域的热点&#xff0c;更多的开发人员开始使用HTML5来开发交互性强、效果出众的网站和各种应用。这是 HTML5 网站大观系列第四篇&#xff0c;本文与大家分享5个非常酷的基于 HTML5 的字体应用演示网站&#xff0c;一起欣赏。 Web Typography For The Lone…

ntp如何确认与服务器偏差_LED电子时钟显示屏如何实现时间同步统一校时?

LED电子时钟显示屏采用一体式铝合金边框设计&#xff0c;更坚固美观节能环保&#xff0c;更以其简单的操作和稳定的性能&#xff0c;广泛应用于学校、考场、医院、金融、移动通信、石油、电力、交通、工业以及国防等同步时钟系统的显示终端&#xff0c;LED电子时钟显示屏已成为…

HDP 2.6 requires libtirpc-devel

HDP 2.6 requires libtirpc-devel 个问题&#xff0c;截止 Mustafa Kemal MAYUK 2017年06月30日 06:30 hadoopPowerSystemsHello, I am trying to install HDP 2.6 on RHEL 7.2 ppc64le. Installation over ambari fails due to "Error: Package: hadoop_2_6_0_3_8-hdfs-2…

推荐10款非常有用的 Ajax 插件

这篇文章与大家分享的是10款非常有用的 Ajax 插件&#xff0c;有用于图片的&#xff0c;用于分页的&#xff0c;还有用于导航的。这些作者的想法特别新颖&#xff0c;希望你能从中找到自己需要的插件。 1. AJAX-ZOOM 非常强大的一款插件&#xff0c;可用鼠标滚轮进行缩放&…

svgaps绘制时不能用中文命名吗_设计师需要了解的切图命名规范

2020年8月21日下午4点50分 黄河公园通常我们在界面设计完成之后要切图给到前端开发。初做UI设计时&#xff0c;把重点都放在设计效果图上&#xff0c;对之后的切图命名规范没有很注重。当时我会有一些疑惑&#xff0c;切图命名的原则是什么&#xff1f;直接命名为能表达清楚的名…

分享20个漂亮的DIV CSS标准化站点案例

看到有些网站的代码十分优雅&#xff0c;心想自己什么时候也能写出这么好的代码。其实&#xff0c;这不是一朝一夕能达到的&#xff0c;需要的实践中不断锤炼和提高。我们可以通过分析别人写得好的网页代码来更加快速的提高自己&#xff0c;下面向大家推荐20个基于DIV CSS标准布…

在单独的WAR组件中对SPA资源和API实现进行分区

单页应用程序正Swift吸引人们的注意力&#xff0c;以实现基于Web的丰富&#xff0c;健壮和移动友好的应用程序。 本质上&#xff0c;这需要改变应用程序体系结构&#xff0c;其中整个应用程序用户界面是使用JavaScript来实现的&#xff0c;而服务器端代码则为服务器端应用程序逻…

上传文件显示进度条_【技巧 】iOSamp;Windows互传文件?透过「文件」轻松解决~...

苹果家的隔空投送能做到手机、电脑间的无缝衔接&#xff1b;在iOS13的「文件」中加入了局域网的文件共享功能&#xff0c;电脑不需要安装任何软件&#xff0c;实现 iPhone 与 Windows 电脑间文件的共享、传输。注意&#xff1a;本文介绍的是基于局域网&#xff08;同一路由器&a…

在Window上使用Jenkins自动部署和上传快照Java工件

这篇文章将展示如何使用Jenkins Continuous Integration自动执行Java Web应用程序&#xff08;使用MYSQL DB和基于Hibernate ORM在基于REST的Jersey2 Spring环境中开发的学生申请应用程序&#xff09;的部署过程-生成项目&#xff0c;运行单元测试&#xff0c;上传构建的工件到…

10个在线Web设计开发工具介绍

1. 在线文本生成器 BlindTextGenerator&#xff1a;对设计师来说&#xff0c;这是一个简单又好用的文本生成小工具。内含许多种字体&#xff0c;可设置字符的大小&#xff0c;数量&#xff0c;样式&#xff0c;段落的数量及对齐方式等&#xff0c;还可以很方便且精确地调节文本…

获取clientheight为0_用10行python代码获取全国城市交通生活圈

今天在网上冲浪看到一个很花哨的数据&#xff0c;全国各城市主要商圈从早上6点到晚上10点的20min&#xff0c;30min,45min,60min,90min生活圈轮廓。1 获取思路按下F12按下F12&#xff0c;点击淮海路可以看到出现一个网站&#xff0c;他就是我们要找的接口接口内容是通过get请求…