PostgreSQL FDW的技术原因及应用_第1页
PostgreSQL FDW的技术原因及应用_第2页
PostgreSQL FDW的技术原因及应用_第3页
PostgreSQL FDW的技术原因及应用_第4页
PostgreSQL FDW的技术原因及应用_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 扬帆起航PostgreSQL FDW的技术原因及应用前生今世走马观花实例:file_fdw实例:postgres_fdw工作原理FDW 意义FDWFDWFDWFDWFDWFDW如何编写大纲FDW 的意义各种强大的数据组件层出不穷应用成为各种数据系统间的搬运工 应对各种异构的接口用于构建数据系统的工具正在变得越来越好,但还缺少一个重要的组件:与Unixshell类似的数据库集成设施。即一种声明式的,简单的,用于组装数据系统的高级语言,数据库世界的巴别塔PostgreSQL FDW提供了组装这类数据系统的基础设施,是一项很有趣的技术postgresql | elasticsearch自动创建pg

2、sql中表的全文索引?SQL更像是数据系统世界的 “世界通用语”INSERT INTO redis.daily_summary SELECT * FROM pgsql.metadata mtJOIN mysql.realtime_counters USING(id) JOIN mongo.history_counters USING(id)FDW 愿景展望ONE DATABASE RULE THEM ALL!FDWFDW 愿景展望Federation Database / PolystorePrestoAWS AthenaFDW 前生今世实现者寥寥无几S Q L / M E D :M a n

3、a g e m e n t o f E x t e r n a l D a t aS Q L S t a n d a r d I S O / I E C 9 0 7 5 - 9 : 2 0 08P o s t g r e S Q L I B M D B 2M a r i a D B FDW 基本模型FDW 前生今世FDW 走马观花CREATE FOREIGN DATA WRAPPER file_fdw;CREATE SERVER IF NOT EXISTS pg_log FOREIGN DATA WRAPPER file_fdw;CREATE USER MAPPING FOR postgres

4、 SERVER pg_log;CREATE FOREIGN TABLE pg_log_monday (log_time user_nametimestamptz, text,text, integer,location application_nametext, text) SERVER pg_log OPTIONS (filename /pg/data/log/postgresql-Mon.csv, format csv);SELECT * FROM pg_log_monday;CREATE FORIEIGN DATA WRAPPER database_nameprocess_idCREAT

5、E SERVER CREATE USER MAPPING CREATE FOREIGN TABLEFDW 走马观花/wiki/Foreign_data_wrappersSQL的NoSQL的BigData的LocalFile的Cloud的百花齐放FDW实例file_fdwpostgres_fdw原装品质,由PostgreSQL全球开发组维护 原版自带,PostgreSQL默认自带这两个扩展File FDW访问外部表(文件,如CSV)读取任意程序的输出并将其转换为数据表 只读访问CSV格式的PG日志与外部软件(Excel,其他数据库) 交换数据CREATE FOREIGN TABLE etc_pa

6、ssword (username TEXT,password TEXT,user_id INTEGER,group_id INTEGER,user_info TEXT,home_dir TEXT, shellTEXT) SERVER fs OPTIONS (PROGRAM $awk -F: NF & !/:space:*#/ print $1,$2,$3,$4,$5,$6,$7 OFS=037 /etc/passwd$, FORMAT csv, DELIMITER E037);除了CSV文件,任何输出csv的程序都可以作为输入执行任意的Shell命令获取输出比如打印出 /etc/passwd或

7、者通过ssh/curl/wget从网络获取数据postgres_fdw原装品质,可读可写可下推ETL / Sharding / CMDBpostgres_fdw Quick Start- execute on node 1SELECT * FROM users LIMIT 200;postgres_fdw pushdown下推是FDW性能的决定性因素谓词(Where条件), 聚合函数(avg, max), 连接子句 (JOIN)TopN (ORDER x LIMIT x)在本地判断需要取回大量数据下推至远程执行,只取回极少量需要的结果postgres_fdw pushdownPostgresF

8、DW支持很多下推postgres_fdwbased sharding利用外部表机制与分区表机制,优雅地实现分片每个实例上都有一张分区表,其中一或N个分区为真实存储数据的本地物理表。 其他分区为外部表,映射到对应真实表所在的Server分片样例- 插入10000条测试数据并查看分布INSERT INTO users (id,username) SELECT i, user # | i FROM generate_series(1, 10000) i; SELECT tableoid:RegClass, array_agg(id) FROM users GROUP BY tableoid;- 当查

9、询落在外部分片上的数据时,会自动取回相应结果test=# EXPLAIN VERBOSE SELECT * FROM users WHERE id = 3;QUERY PLAN-Foreign Scan on public.users_1 (cost=100.00.121.21 rows=4 width=68) Output: users_1.id, users_1.username, users_1.passwordRemote SQL: SELECT id, username, password FROM public.users_1 WHERE (id = 3)- 当扫描整个分区表时,查

10、询会自动路由至本地分区和远程分区FDW sharding FAQ外部表的约束问题外部表的死锁检测问题 外部表的下推与性能问题外部表与主从FailoverFDW的连接复用FDW的search_path例如:想知道某一个查询在主从离线三套库上各自的执行时长,平均执行时长,总执行时长可以便利地从一个中心点实时查询所有线上数据库的元数据聚合postgres_fdw for CMDBpostgres_fdw 可以读取远程PostgreSQL的数据,自然也可以读取远程数据库实例的元数据(catalog)当使用postgres_fdw导入远程表时,如果远端表有字段使用了系 统保留字段名,是没有办法导入该字段

11、的,只能手工创建去除该 字段的外部表定义,作为曲线救国的方式例如pg_catalog.pg_replication_slots的xmin字段mysql_fdwCREATE EXTENSION mysql_fdw;CREATE SERVER mysql_serverFOREIGN DATA WRAPPER mysql_fdw OPTIONS (host , port 3306);CREATE USER MAPPING FOR postgresSERVER mysql_serverOPTIONS (username foo, password bar);CREATE FOREIGN TABLE warehouse( warehouse_id int,warehouse_name text, warehouse_created datetime)SERVER mysql_serverOPTIONS (dbname db, table_name warehouse);/EnterpriseDB/mysql_fdwmysql_fdw与mongo_fdw均由EDB提供支持连接mysql时,mysql_fdw实际会使用mysql的C语言驱动libmysqlclientMongoFDW/EnterpriseDB/mongo_fdwMongoFDW Mong

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论