扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
GreenPlum数据库是基于postgresql源代码开发的分布式数据库,类似于oracle 的RAC
成都创新互联主营建平网站建设的网络公司,主营网站建设方案,重庆App定制开发,建平h5微信小程序开发搭建,建平网站营销推广欢迎建平等地区企业咨询
准备备库环境安装64位Linux安装与RDS PostgreSQL大版本一致的PostgreSQL软件空间规划
申请一个replication角色的用户
配置外网地址(可选)
配置白名单,测试连通性正常
下载全量备份集,测试归档的下载接口是否正常
配置postgresql.conf, recovery.conf
启动备库,检查是否同步
摘要:采用加密技术是保护数据库信息的一种较为有效的手段。在数据库中对数据进行加密保护,其加密机制主要涉及加密算法、加密粒度、密钥生成和管理、查询操作的实施以及对系统性能的影响等五个方面。该文针对加密粒度机制和对开源的PostgreSQL数据库研究的基础上提出了几种实现数据库数据加密的加密方案,并基于实际相关数据库安全平台课题的研究简要分析了这几种方法的优点与不足,为未来实现完备的数据库保护提供一些借鉴。(剩余4703字)
作为应用最广泛的信息存储和处理系统,数据库中存在大量敏感数据,如何防止数据被窃取和篡改是重中之重。加密技术是提高数据库安全的一个重要手段,在对数据库中存储数据进行加密时,需要结合它们的特点,对加密算法、加密粒度以及加密方式进行合理选择。比如,在选择加密算法时,对加密尤其是解密速度要求比较快,不能因为加/解密过程而导致系统性能大幅度下降。其次,应当支持灵活的加密粒度。根据用户的需要,能够选择对数据库、表、记录、字段、数据项进行加密。本文简要介绍和分析了在一个基于开源数据库PostgreSQL的安全数据库系统研究的基础上,如何针对PostgreSQL数据库的存储数据的不同层次,对数据库的文件(或表、页)、记录、字段等多个层次实现了加密。
PostgreSQL自带有一个简易的全文检索引擎,可以实现小规模数据量的全文检索功能。本文我们将引导介绍一下这个功能,对于小数据量的搜索这个功能是足够使用的,而无需搭建额外的ES等重量级的全文检索服务器。
PG的全文检索操作符是 @@ ,当一个 tsvector (文档)和 tsquery (条件)匹配时返回 true ,并且前后顺序无影响:
和普通的SQL查询一样,只要在 WHERE 条件中使用这个符号就代表使用全文检索条件筛选文档了。如:
@@ 操作符支持隐式转换,对于 text 类型可以无需强类型转换( ::tsvector 或 to_tsvector(config_name, text) ),所以这个操作符实际支持的参数类型是这样的:
tsquery 查询条件并不是简单的正则,而是一组搜索术语,使用并且使用布尔操作符 (AND)、 | (OR)和 ! (NOT)来组合它们,还有短语搜索操作符 - (FOLLOWED BY)。更详细的语法参见 此文档 。
此外,PostgreSQL还提供了两个相对简化的版本 plainto_tsquery 和 phraseto_tsquery 。
plainto_tsquery ( plainto_tsquery([ config regconfig, ] querytext text) returns tsquery )用户将未格式化的 text 经过分词之后,插入 符号转为 tsquery :
phraseto_tsquery ( phraseto_tsquery([ config regconfig, ] querytext text) returns tsquery )行为和 plainto_tsquery 行为类似,但是分词之后不是插入 而是 - (FOLLOWED BY):
使用索引可以加快全文检索的速度。对于全文检索来说,可选的索引类型是 GIN (通用倒排索引)和 GIST (通用搜索树),官方文档更推荐使用 GIN索引 。创建一个 GIN 索引的范例:
也可以是一个连接列:
还可以单独创建一个 tsvector 列,为这个列创建索引:
除了普通的 ORDER BY 条件之外,PostgreSQL为全文检索提供了两个可选的排序函数 ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 和 ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 ,以便实现基于 权重 的排序。
此外,对于PostgreSQL 9.6以上的版本还可以使用 RUM index 排序。(注意,这个是扩展,默认不包含)。
PostgreSQL默认的分词字典中并不包含中文分词字典,因此我们必须手工引入。目前一个比较好的项目是 zhparser ,同时这个插件也是阿里云的RDS默认包含的。安装和启用没什么好说的。值得一提的是分词配置参数。
在 CREATE EXTENSION 之后,必须配置分词参数才能正确进行分词和查找,否则什么都查不到。官方文档提供的一个配置策略是:
n,v,a,i,e,l 这几个字母分别表示一种token策略,只启用了这几种token mapping,其余则被屏蔽。具体支持的参数和含义可以用 \dFp+ zhparser 显示:
WITH simple 表示词典使用的是内置的simple词典,即仅做小写转换。根据需要可以灵活定义词典和token映射,以实现屏蔽词和同义词归并等功能。
比如我们看下面这个例子:
可以看到 江淮 这个词组在查询的时候被忽略了,我们启用 j (abbreviation,简称)再看看结果:
所以实际使用中要设置合理的token types,过少将导致搜索结果不准确,过多将导致性能下降。此外,还有一些诸如 短词复合: zhparser.multi_short = f 这一类的控制分词结果的选项,根据实际使用酌情开启。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流