干货分享|优炫数据库支持多业务场景(二)

干货分享|优炫数据库支持多业务场景(二),第1张

上期分享中,我们介绍优炫数据库支持的数据存储方式。

戳: 干货分享 优炫数据库支持多业务场景

本期,我们来讲讲优炫数据库支持的多种数据类型。

基本数据类型存储与管理

优炫数据库拥有完备的数据类型,内置数据类型包括 数字类型、货币类型、字符类型、日期/时间类型、布尔类型、枚举类型、网络地址类型、位串类型、文本搜索类型等, 支持使用 serial 类型创建表自增列。

通常为了加快指定过滤条件下从表中查询数据的速度,可以为表的某个字段或某几个字段建立索引。数据库对基本数据提供多种索引类型:B-tree、Hash、GIN(倒排序索引)和 BRIN(数据库块范围索引)。每一种索引类型使用了一种不同的算法来适应不同类型的查询。 默认情况下, CREATE INDEX命令创建适合于大部分情况的B-tree索引。

XML/JSON数据类型存储与管理

优炫数据库内置半结构化XML、JSON、JSONB数据类型。

xml数据类型可以被用来存储XML数据,它比直接在一个text域中存储XML数据的优势在于,它会检查输入值的结构是不是良好,并且有支持函数用于在其上执行类型安全的 *** 作。xml类型可以存储结构良好(如XML标准所定义)的“文档”,以及“内容”片段,它们由XML标准所定义,这意味着内容片段中可以有多于一个的顶层元素或字符节点。通过表达式来评估一个特定的xml值是一个完整文档或者仅仅是一个文档片段。

JSON类型强制检查数据有效性,使用专门的 *** 作符和内置函数 *** 作数据,保留空格,重复键和顺序等。JSONB是解析输入后保存的二进制数据,删除了数据中的空格、调整了顺序、优化了存储、保留最后一个重复键值,可被索引。和 JSON 一样,JSONB支持嵌入式的文档和数组。JSONB 由若干个键值对存储为单个实体,这种实体称为文档。 JSONB具有以下几个特性:轻量级(Lightweight),可遍历性(Traversable),高效性(Efficient)。 由于所需存储更小,JSONB通常是首选格式。两者区别在于:JSON类型写快读慢,JSONB类型写慢读快,支持SQL/JSON路径语言。此外,数据库支持对这两类数据的全文检索。

GIS空间类型存储与管理

优炫数据库支持GIS的地理信息应用,支持PostGIS、ArcGIS、超图,支持OpenGIS联盟(开放地理信息系统,OGC)抽象数据类型的SQL3规范,提供对地理矢量数据、3D模型、线性参考数据的组织、存储、空间索引和管理。

Geometry(几何对象类型)是优炫数据库的一个基本存储类型, 空间数据都会以Geometry的形式存储在数据库里,本质是个二进制对象。使用OGC推荐的WKT(Well-Known Text)和WKB(Well-Known Binary)格式进行描述,大幅增加了易用性,WKT与WKB基本数据类型(矢量数据)包括:

l (POINT):例如POINT(0 0);

l 线 (LINESTRING):例如LINESTRING(0 0,1 1,1 2)

l (POLYGON多边形):例如POLYGON((0 0,4 0,4 4,0 4,0 0)) 简单多边形,例如POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) 多边形有一个内部的"孔洞(hole)";

l 多点 (MULTIPOINT):例如MULTIPOINT((0 0),(1 2));

l 多线 (MULTILINESTRING):例如MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4));

l 多面 (MULTIPOLYGON):例如MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)));

l 几何集合 (GEOMETRYCOLLECTION):例如GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))。

栅格空间数据类型raster用于表示jpeg,tiff,png,DEM模型这样文件格式的数据。每一个栅格至少有1个波段,每个波段又有一系列像素值,栅格数据是转换成地理坐标的。可以从数据库外部导入已有栅格数据,也可在数据库内创建栅格数据。下面是一个在数据库内部创建栅格数据的示例:

拓扑类型和函数用于管理拓扑结构,比如面、边界和点。

创建一个带有栅格记录的栅格列的表可以用下面的SQL完成:

如果创建的栅格不依赖于其他栅格,那么可以使用函数:

ST_MakeEmptyRaster,接着使用ST_AddBand添加栅格数据。也可以使用geometry对象来创建栅格你需要使用函数ST_AsRaster。可能还需要和其他函数比如函数ST_Union 或函数 ST_MapAlgebraFct 或者其他地图代数系列函数联合使用。甚至还有一些根据一些已经存在的栅格表创建新的栅格表的可选函数。例如可以使用函数ST_Transform 根据一个已有的栅格表在其他投影系中创建一个新的栅格表。然后通过下SQL命令创建一个空间索引:

通过空间索引R-Tree实现空间数据查询和 *** 作,R-Tree将数据分解为矩形(rectangle)、子矩形(sub-rectangle)和子-子矩形(sub-sub rectangle)等。它是一种可自动处理可变数据的密度和对象大小的自调优(self-tuning)索引结构。

图数据存储与管理

图数据以图关系这种数据结构存储,把图数据的顶点和边信息存储到关系型数据类型中,这些信息包括:

l 顶点(Vertices):一个实体一个顶点,一个实体可以有多个属性。

l 边(Edges):两个实体之间的连接线。

l 属性:实体和边都可以有多个属性。形象举个例子,一个实体对应关系表中一行记录,一个实体的属性代表关系表中这行记录的所有字段和值构成的键值对。

在优炫数据库中图数据通过关系型数据进行存储,这些数据与图模型中的数据相对应。例如通过下SQL语句建立存储图数据的表:

然后新增加数据,后续就可以根据这些数据进行图相关的计算和分析了。

时序数据存储与管理

时序数据存储和管理,通过把时序数据存储到关系型数据类型中。时序数据是指时间序列数据。时间序列数据是同一统一指标按时间顺序记录的数据列。在同一数据列中的各个数据必须是同口径的,要求具有可比性。时序数据可以是时期数,也可以时点数。时间序列分析的目的是通过找出样本内时间序列的统计特性和发展规律性,构建时间序列模型,进行样本外预测。

文档//视频类型存储与管理

优炫数据库可存储任意未知具体内容的、声音、视频等非结构化数据,支持 GB 级大对象数据类型与流式数据访问。可借助于数据库图形化管理工具、应用程序、第三方工具等查看这些非结构化数据。根据业务需要也可借助数据库插件读取或识别这些非结构化数据的内容用于数据分析。

优炫数据库支持多种二进制数据类型,包括:Bytea、OID、Blob、raw、Varbinary、Longvarbinary。

自定义数据类型存储与管理

优炫数据库可自定义数据类型、索引、函数等数据库对象。 新增加的数据类型可以是新数据类型,也可以是已知几个数据类型的复合数据类型。

模分析型数据库用户可在数据库中使用CREATE TYPE或CREATE DOMAIN命令增加新的数据类型;可通过自定义函数或存储过程对数据进行各种处理。

CREATE TYPE在当前数据库中注册一种新的数据类型,定义数据类型的用户将成为它的拥有者。五种形式的CREATE TYPE,它们分别创建组合类型、枚举类型、 范围类型、基础类型或者 shell 类型。shell 类型仅仅是一种用于后面要定义的类型的占位符,通过发出一个不带除类型名之外其他参数的CREATE TYPE命令可以创建这种类型。在创建范围类型和基础类型时,需要 shell 类型作为一种向前引用。

CREATE DOMAIN创建一个新的域。 域本质上是一种带有可选约束(在允许的值集合上的限制)的数据类型。域主要被用于把字段上的常用约束抽象到一个单一的位置以便维护。例如,几个表可能都包含电子邮件地址列,而且都要求相同的 CHECK 约束来验证地址的语法。可以为此定义一个域,而不是在每个表上都单独设置一个约束。

R语言数据结构主要有以下四种:

向量:一串相同类型的数据,不限于数字,字符,逻辑都可以,单独拿出来的一列。什么是看做一个整体,一个向量里有若干个数据,它们组成一个整体之后,可以拥有一个共同的名字。

以下主要讲向量:

向量就是一串数据,串联在一起,组成一个整体,向量由元素组成。

很长的向量要么从数据框提取一列,或是有规律地生成,如连续的数据:

paste0函数连接两个向量,逗号 , 前后各有一个向量,如字符型和数值型向量。

paste0和paste的区别是:

paste0函数 把两个向量的元素一一对应进行 无缝 连接,而 paste函数 把两个向量的元素一一对应进行 空格 连接。paste函数有默认值为空格,在空格处把空格去掉sep=""引号里把默认的空格去掉,即什么没有,就变成无缝连接,也可以用其它的符号连接sep="/",sep="_"等。

数值型、字符型、逻辑型:只要有字符型在,用c()生成向量为字符型。只有逻辑型和数值型,用c()生成向量为数值型。

c()函数生成向量时,要求为生成同一种数据类型

注意的地方:

变量名 :c()为生成向量函数,一般除字母c外,取单个字母或是单词及缩写,组成变量名的字母之间不要有空格,不能以数字为变量名或是以数字开头,变量名不能是中文名,特殊符号等。

<- 与c()函数之间没有空格。

<- 的快捷键输入:

mac电脑: option 和 - ;

windows电脑: Alt 和 -

= 在任何情况下可替代 <- ,但是 = 除了赋值,还有其它用法,比如函数里参数用法。 <- 不能在任意情况下代替 = 。

强大的计算是体现在批量计算上,先把一些数据组成一个整体,

还是以向量x为单位进行

其中五个重要函数,一定要掌握。

能用函数代替的东西,坚决不用手和眼睛去数,比如length()统计向量元素个数。

结论:unique(x)与x[!duplicated(x)]函数相同

用identical()可以判断两个函数是否相同(数据结构与数据类型是否完全相同)

重点和难点:

x==y :x和对应位置的y相等吗?(x和y里的元素,按顺序一一对应比较,讲究位置对应,两者里第一个元素相同就返TRUE,比较完两个向量的第一位置上的元素,接着比较两个向量第二个位置元素到两个向量最后)。

x和y不一样长:理解“循环补齐”

结论: 如果x与y的向量元素长度不相等,以长度向量说了算,不是由在==前的向量决定。

x%in%y :x的每个元素在y中存在吗?(x的元素挨个到y里和所有元素比较,在y里有的相同的返回TRUE,不讲究位置,有就是TRUE,没有为FALSE)。比如y向量加了一个元素2,返回还是9个逻辑值,返回的逻辑值是与x一一对应,和y没有关系。

加减乘除,两个向量直接可以进行,等位运算。前提是两个向量必须等长,即元素个数一样。

用paste0或是paste连接两个向量,两个向量的长度(元素个数)不一致,循环补齐。

intersect(x,y),union(x,y),setdiff(x,y),setdiff(y,x),x与y顺序颠倒(setdiff()与%in%有点儿相似)。

[] :取子集符号,将TRUE对应的值挑选出来,FALSE丢弃

例:在13个数中,取出大于7的数,首先把13个数值组成一个向量x,x>7返回是逻辑值。

取值子集的对象放在中括号的外面,取子集的逻辑值向量放在中括号里面。

单独运行中括号里的向量,中括号里各种条件的返回结果有共同的规律,是一个与x等长的逻辑值向量。

下标:代表在哪个位置上。

符号 : []

按照逻辑值: 中括号里是与x等长的逻辑值向量

按照位置: 中括号里是由x的下标组成的向量(支持反选)

思考:从13个彩色(绿,蓝,黄)球中,选出属于蓝色和绿色的:

使用x %in% y还是x ==y,用x %in% y,不是等位循环补齐运算,%in%比较灵活,可以在很多场景中使用,如3选2,50选2,50选20等。

13个球的颜色赋值给向量x,蓝色和绿色赋值给y。

x %in% y

x[x %in% y]

修改向量的元素,修改x里的第四个元素

注意:R于语言里所有的修改,都要赋值,没有赋值就是没有发生过

把随机函数生成的数永远为一组数据:用随机函数生成向量,后运行setseed(10086)

x[match(y,x)] 和 x[order(x)]

排序,如何调整元素顺序

结论:sort(x)等于x[order(x)],背诵下来

两个向量没有做关联的 *** 作,可以用order函数排序对应信息

向量匹配排序-match,match函数是连线用的

x[match(y,x)] 的以后用法:以y作为模版,给x调顺序。

match:谁在中括号外面,谁就在后面, x[match(y,x)] ,以y作为模板,用x作为原料去取子集,按照一个顺序取子集,取出来的子集和y一样。

需要背诵的两个用法: x[match(y,x)] 和 x[order(x)]

练习题:在以下x和y表格里如何将y的列名一对一替换为ID

切换Rproj的时候出现d窗:是否将工作空间保存到 Rdata ?

答案是:不保存,之前单独保存好脚本和,这里出现的提示是否临时保存,不需要保存。

Rdata ?是什么:

以 开头的文件,通常用作配置,系统默认隐藏这类文件

Rdata 是保存工作空间的默认文件

History 是保存历史命令的默认文件

如果打开Rstudio特别慢,可能是因为 Rdata 保存了很大的变量,可以找到 Rdata 文件将其删除。

在Rproj右下角打开脚本时,编辑器脚本的中文注释出现乱码,解决如下:

以上内容是听 生信技能树 小洁老师的 R语言线上课 ,根据自己的理解记录下来,小洁老师授课非常细心,对不同水平的同学都照顾到,并且补充很多技巧以及注意事项。

之前学习过R语言,那时对向量认识不够深,也没有重视,数据框的列单独拿出来就是一个向量。认真听小洁老师的讲解以及最近跑几个GEO数据集发现学会对向量的熟练 *** 作以及熟练一些重要的函数,在实战过程中会顺利些。

矢量图就是向量图,以下是矢量图和位图的区别:

● 矢量又称为“向量”,矢量图形中的图形元素(点和线段)称为对象,每个对象都是一个单独的个体,它具有大小、方向、轮廓、颜色和屏幕位置等属性。简单地说,矢量图形软件就是用数学的方法来绘制矩形等基本形状。

• 矢量图特点:

矢量图形能重现清晰的轮廓,线条非常光滑、且具有良好的缩放性;因为图像中保存的是线条和图块的信息,与分辨率和图形大小无关,只与图像的复杂程度有关,所以图像文件所占的存储空间交较小;此外文字编辑能力强。与位图相比,在显示和打印方面都快的多;图形不真实生动,颜色不丰富。无法像照片一样真实地再现这个世界的景色。

• 矢量图的文件格式 :

矢量图形格式也很多,如Corel DRAW的cdr、Adobe Illustrator的AI、EPS和SVG、AutoCAD的dwg和dxf、windows标准图元文件wmf和增强型图元文件emf等等。

• 矢量图形文件的规律:

1 可以无限放大图形中的细节,不用担心会造成失真和色块。

2 一般的线条的图形和卡通图形,存成矢量图文件就比存成位图文件要小很多。

3 存盘后文件的大小与图形中元素的个数和每个元素的复杂程度成正比。而与图形面积和色彩的丰富程度无关。(元素的复杂程度指的是这个元素的结构复杂度,如五角星就比矩形复杂、一个任意曲线就比一个直线段复杂)。

4 通过软件,矢量图可以轻松地转化为位图,而位图转化为矢量图就需要经过复杂而庞大的数据处理,而且生成的矢量图的质量绝对不能和原来的图形比拟。

• 常用的矢量绘图软件:Illustrator、CorelDraw、FreeHand、AutoCAD等。

● 位图,又称为点阵图像、像素图或栅格图像,是由称作像素(元素)的单个点组成。这些点可以进行不同的排列和染色以构成图样。

• 位图的单位:像素(Pixel);

像素(Pixel):指可以表现亮度甚至色彩变化的一个点,是构成数字图像的最小单位。像素具有大小相同、明暗和颜色的变化。特点是有固定的位置和特定的颜色值。

• 位图特点:

位图图像善于重现颜色的细微层次,能够制作出色彩和亮度变化丰富的图像,可逼真地再现这个世界,文件庞大,不能随意缩放;打印和输出的精度是有限的;

• 位图的文件格式:

位图的文件类型很多,如bmp、pcx、gif、jpg、tif、photoshop的psd、

kodak photo CD的pcd、corel photo paint的cpt等。同样的图形,存盘成以上几种文件时文件的字节数会有一些差别,尤其是jpg格式,它的大小只有同样的bmp格式的1/20到1/35,这是因为它们的点矩阵经过了复杂的压缩算法的缘故。

• 位图文件的规律:

1 图形面积越大,文件的字节数越多;

2 文件的色彩越丰富,文件的字节数越多。

常用的位图软件:Photoshop、Photo Painter、Photo Impact、Paint Shop Pro、Painter等。

以上就是关于干货分享|优炫数据库支持多业务场景(二)全部的内容,包括:干货分享|优炫数据库支持多业务场景(二)、R语言数据结构-向量、什么是矢量图位图向量图有何区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10156013.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存