Microsoft Word - PostgreSQL _对接_SequoiaDB.docx

Similar documents
1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

使用Jaspersoft BI工具访问SequoiaDB数据库

FileMaker 16 ODBC 和 JDBC 指南

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

FileMaker 15 ODBC 和 JDBC 指南

Hive:用Java代码通过JDBC连接Hiveserver

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

jdbc:hsqldb:hsql: jdbc:hsqldb:hsqls: jdbc:hsqldb:http: jdbc:hsqldb:https: //localhost // :9500 / /dbserver.somedomain.com /an_alias /enrollme

Microsoft Word - 01.DOC

ebook8-30

目錄

EJB-Programming-4-cn.doc

untitled

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

untitled

Java

概述

網路安全:理論與實務 第二版

投影片 1

六域链联盟 SDChain-Matrix 节点搭建指南 2018/07/26 Version : 1.0.0

Microsoft Word - linux命令及建议.doc

RunPC2_.doc

untitled

IP505SM_manual_cn.doc

基于UML建模的管理管理信息系统项目案例导航——VB篇

Oracle 4

sql> startup mount 改变数据库的归档模式 sql> alter database archivelog # 打开数据库 sql> alter database open 禁止归档模式 sql> shutdown immediate sql>startup mount sql> al

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

软件概述

Microsoft Word htm

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

Microsoft Word - PS2_linux_guide_cn.doc

ebook 185-6

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

PowerPoint 演示文稿

ebook140-9

1-1 database columnrow record field 不 DBMS Access Paradox SQL Server Linux MySQL Oracle IBM Informix IBM DB2 Sybase 1-2

自由軟體教學平台

untitled

epub 61-2

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

ebook35-2

本文由筱驀釹贡献

通过Hive将数据写入到ElasticSearch

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

RUN_PC連載_12_.doc

EJB-Programming-3.PDF


6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

软件测试(TA07)第一学期考试

untitled

WWW PHP

ebook140-8

Pchome

f2.eps

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

1. 访 问 最 新 发 行 公 告 信 息 jconnect for JDBC 访 问 最 新 发 行 公 告 信 息 最 新 版 本 的 发 行 公 告 可 以 从 网 上 获 得 若 要 查 找 在 本 产 品 发 布 后 增 加 的 重 要 产 品 或 文 档 信 息, 请 访

ebook71-13

开源软件DSpace的安装和维护(清华_邹荣).ppt

2004 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / SunSun MicrosystemsSun

SQL Server SQL Server SQL Mail Windows NT

untitled

Chapter 9: Objects and Classes

ebook62-1

學 科 100% ( 為 單 複 選 題, 每 題 2.5 分, 共 100 分 ) 1. 請 參 閱 附 圖 作 答 : (A) 選 項 A (B) 選 項 B (C) 選 項 C (D) 選 項 D Ans:D 2. 下 列 對 於 資 料 庫 正 規 化 (Normalization) 的 敘

untitled

Chapter 2

Linux服务器构建与运维管理

2005 Sun Microsystems, Inc Network Circle, Santa Clara, CA U.S.A. Sun Sun Berkeley BSD UNIX X/Open Company, Ltd. / Sun Sun Microsystems Su

JavaIO.PDF

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

untitled

使用SQL Developer

资源管理软件TORQUE与作业调度软件Maui的安装、设置及使用

穨文件1

"+handlermethod.getbean().getclass().getname()); public void aftercompletion(httpservletrequest req, HttpServletResponse resp, Object handler, Excepti

プリント

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

AL-M200 Series

<4D F736F F D A617661B7C3CECA53514C BEDDBFE2B5C4C9E8BCC6D3EBCAB5CFD62E646F63>

Flume-ng与Mysql整合开发

ebook 96-16

基于ECO的UML模型驱动的数据库应用开发1.doc

Windows 2000 Server for T100

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

ebook70-14

untitled

一 個 SQL Injection 實 例 的 啟 示 頁 2 / 6 因 此, 在 知 名 網 站 上 看 到 SQL Injection, 讓 人 驚 心, 卻 不 意 外 網 站 專 案 外 包 是 目 前 業 界 的 常 態, 而 在 價 格 取 勝 的 制 度 下, 低 價 得 標 的 S

Simulator By SunLingxi 2003

0 配置 Host MIB 设备 V ( 简体版 ) 0 Update: 2016/1/30

untitled

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

3.1 num = 3 ch = 'C' 2

ARM JTAG实时仿真器安装使用指南

0SQL SQL SQL SQL SQL 3 SQL DBMS Oracle DBMS DBMS DBMS DBMS RDBMS R DBMS 2 DBMS RDBMS R SQL SQL SQL SQL SELECT au_fname,au_ lname FROM authors ORDER BY

深圳市亚可信息技术有限公司 NetWeaver 7.3 EhP1 ABAP on Redhat Enterprise Linux Server 62 for Oracle112 High Availability System Installation Created by

Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provided by SUNPLUS TECHNOLO

Transcription:

1 部署 PostgreSQL 1.1 安装 PostgreSQL 本教程为 PostgreSQL 与 SequoiaDB 的对接教程, 所以作者建议使用者在 sdbadmin 用户下 (SequoiaDB 数据库默认用户 ) 安装并使用 PostgreSQL( 本教程使用 PostgreSQL 9.3.4 版本 ) 1 源码编译 PostgreSQL 下载链接 :http://www.postgresql.org/ftp/source/ 解压后编译安装 ( 需要 root 权限 ) $>tar - zxvf postgresql- 9.3.4.tar.gz $>cd postgresql- 9.3.4/ $>./configure && make && make install PostgreSQL 的默认安装路径为 /usr/local/pgsql 2 切换用户 $>su - sdbadmin 3 拷贝 PostgreSQL 文件 $>cp - rf /usr/local/pgsql ~/ 4 进入 PostgreSQL 目录 $>cd pgsql 5 环境变量添加 PostgreSQL 的 lib 库 $>export LD_LIBRARY_PATH=$(pwd)/lib:${LD_LIBRARY_PATH 建议用户将 PostgreSQL 的 lib 加到 sdbadmin 用户的环境变量中, 否则每次登陆 sdbadmin 使用 PostgreSQL, 都需要手工添加 PostgreSQL 的 lib 到 LD_LIBRARY_PATH 中 $>echo export LD_LIBRARY_PATH=$(pwd)/lib:${LD_LIBRARY_PATH >> ~/.bash_profile 6 创建 PostgreSQL 的数据目录 $>mkdir pg_data 7 初始化数据目录 ( 该操作只能操作一次 ) $>bin/initdb - D pg_data/ 1

1.2 安装 SequoiaDB- PostgreSQL 插件 1 创建 PostgreSQL 的 lib 目录获取 PostgreSQL 的 libdir 路径 $> PGLIBDIR=$(bin/pg_config - - libdir) 如果显示的 libdir 目录不存在, 则需要用户自己手工创建目录 $> mkdir - p ${PGLIBDIR 2 创建 PostgreSQL 的 extension 目录获取 PostgreSQL 的 sharedir 路径 $> PGSHAREDIR=$(bin/pg_config - - sharedir) 在 shardir 目录上再创建 extemsion 目录 $> mkdir - p ${PGSHAREDIR/extension 3 从 SequoiaDB 的安装包中, 拷贝 PostgreSQL 的扩展文件从 SequoiaDB 安装后的 postgresql 目录中拷贝 sdb_fdw.so 文件到 PostgreSQL 的 lib 目录, SequoiaDB 默认安装目录为 /opt/sequoiadb $> cp - f ${SDBADMIN_HOME/postgresql/sdb_fdw.so ${PGLIBDIR 4 将 sdb_fdw.control 和 sdb_fdw- - 1.0.sql 脚本拷贝到 extension 目录中, 两个脚本需要用户手工编辑 $>cp - f sdb_fdw.control ${PGSHAREDIR/extersion ; $>cp - f sdb_fdw- - 1.0.sql ${PGSHAREDIR/extersion ; sdb_fdw.control 脚本内容 # sdb_fdw extension comment = 'foreign data wrapper for SequoiaDB access' default_version = '1.0' module_pathname = '$libdir/sdb_fdw' relocatable = true sdb_fdw- - 1.0.sql 脚本内容 /* contrib/mongo_fdw/sdb_fdw- - 1.0.sql */ - - complain if script is sourced in psql, rather than via CREATE EXTENSION 2

\echo Use "CREATE EXTENSION sdb_fdw" to load this file. \quit CREATE FUNCTION sdb_fdw_handler() RETURNS fdw_handler AS 'MODULE_PATHNAME' LANGUAGE C STRICT; CREATE FUNCTION sdb_fdw_validator(text[], oid) RETURNS void AS 'MODULE_PATHNAME' LANGUAGE C STRICT; CREATE FOREIGN DATA WRAPPER sdb_fdw HANDLER sdb_fdw_handler VALIDATOR sdb_fdw_validator; 1.3 部署 PostgreSQL 1 检查端口是否被占用 PostgreSQL 默认启动端口为 5432, 检查端口是否被占用 ( 检查操作建议使用 root 用户操作 ) $> netstat - nap grep 5432 如果 5432 端口被占用或者希望修改 PostgreSQL 的启动端口, 则执行 : $> sed - i "s/#port = 5432/port = 11780/g" pg_data/postgresql.conf 2 启动 Postgresql 服务进程 $> bin/postgres - D pg_data/ >> logfile 2>&1 & 3 检查 PostgreSQL 是否启动成功 $> netstat - nap grep 5432 tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 20502/postgres unix 2 [ ACC ] STREAM LISTENING 40776754 20502/postgres 3

/tmp/.s.pgsql.5432 4 创建 PostgreSQL 的 database $> bin/createdb - p 5432 foo 5 进入 PostgreSQL shell 环境 $> bin/psql - p 5432 foo 2 PostgreSQL 连接 SequoiaDB 以下操作均在 PostgreSQL shell 环境下执行 2.1 PostgreSQL 与 SequoiaDB 建立关联 1. 加载 SequoiaDB 连接驱动 foo=# create extension sdb_fdw; 2. 配置与 SequoiaDB 连接参数 foo=# create server sdb_server foreign data wrapper sdb_fdw options(address '192.168.30.182', service '11810', user 'sdbadmin', password 'cmbc123, preferedinstance s ); 注 : 1) 如果用户指定多个协调节点, 避免一个协调节点出现异常后,PostgreSQL 无法使用, 创建 server 时, 应该写成 foo=# create server sdb_server foreign data wrapper sdb_fdw options(address '192.168.30.182:11810,192.168.30.183:11810,192.168.30.184:11810', service '', user 'sdbadmin', password 'cmbc123'); address 参数变成 hostname1:service1,hostname2:service2 ; 用户需要指定 service 为空字符串 ; 如果 SequoiaDB 没有建立用户密码登陆, 可以忽略 user 和 password 参数 2) preferedinstance 参数, 指定 PostgreSQL 访问 SequoiaDB 数据节点时, 优先连接哪种角色的数据节点, 默认为 s, 可输入参数 m / M / s / S / a / A /1-7, 分别表示 master/slave/anyone/node1- node7 3. 关联 SequoiaDB 的集合空间与集合 4

注 : 集合空间与集合必须已经存在于 SequoiaDB, 否则查询出错 默认情况下, 表的字段映射到 SequoiaDB 中为小写字符, 如果强制指定字段为大写字符, 创建方式参考注意事项 1 映射 SequoiaDB 的数组类型, 创建方式参考注意事项 2 foo=# create foreign table test (name text, id numeric) server sdb_server options ( collectionspace 'chen', collection 'test' ) ; 4. 查询 foo=# select * from test; 5. 写入数据 foo=# insert into test values('one',3); 6. 更改数据 foo=# update test set id=9 where name='one'; 7. 查看所有的表 (show tables;) foo=# \d 8. 查看表的描述信息 foo=# \d test 9. 删除表 foo=# drop foreign table test; 10. 退出 PostgreSQL shell 环境 foo=# \q 2.2 使用须知 2.2.1 数据类型的对应关系 SequoiaDB string String String int/double/long int int/double PostgreSQL text char/char(n) varchar/varchar(n) numeric int float 5

date date binary bytea timestamp timestamp array TYPE[] sample:text[] boolean boolean null text 2.2.2 注意事项 1 注意字符的大小写 SequoiaDB 中的集合空间 集合和字段名均对字母的大小写敏感 1) 集合空间 集合名大写假设 SequoiaDB 中存在名为 TEST 的集合空间,CHEN 的集合, 在 PostgreSQL 中建立相应的映射表 foo=# create foreign table sdb_upcase_cs_cl (name text) server sdb_server options ( collectionspace 'TEST', collection 'CHEN' ) ; 2) 字段名大写假设 SequoiaDB 中存在名为 foo 的集合空间,bar 的集合, 而且保存的数据为 : { "_id": { "$oid": "53a2a0e100e75e2c53000006", "NAME": "test" 在 PostgreSQL 中建立相应的映射表 foo=# create foreign table sdb_upcase_field ( NAME text) server sdb_server options ( collectionspace 'foo', collection 'bar' ) ; 查询结果为 : foo=# select * from sdb_upcase_field; NAME - - - - - - test 6

(1 rows) 2 映射 SequoiaDB 中的数据类型假设 SequoiaDB 中存在 foo 集合空间,bar 集合, 保存记录为 : { "_id": { "$oid": "53a2de926b4715450a000001", "name": [ 1, 2, 3 ], "id": 123 在 PostgreSQL 中建立相应的映射表 foo=# create foreign table bartest (name numeric[], id numeric) server sdb_server options ( collectionspace 'foo', collection 'bar' ) ; 查询结果 : foo=# select * from bartest; name id - - - - - - - - - +- - - - - {1,2,3 123 3 连接 SequoiaDB 协调节点错误如果 PostgreSQL 连接的 SequoiaDB 协调节点重启, 在查询时报错 ERROR: HINT: Unable to get collection "chen.test", rc = - 15 Make sure the collectionspace and collection exist on the remote database 解决方法 : 退出 PostgreSQL shell foo=# \q 重新进入 PostgreSQL shell 7

$> bin/psql - p 5432 foo 2.2.3 调整 PostgreSQL 配置文件 1 查看 pg_shell 中默认的配置 foo=#\set AUTOCOMMIT = 'on' PROMPT1 = '%/%R%# ' PROMPT2 = '%/%R%# ' PROMPT3 = '>> ' VERBOSITY = 'default' VERSION = 'PostgreSQL 9.3.4 on x86_64- unknown- linux- gnu, compiled by gcc (SUSE Linux) 4.3.4 [gcc- 4_3- branch revision 152973], 64- bit' DBNAME = 'foo' USER = 'sdbadmin' PORT = '5432' ENCODING = 'UTF8' 2 调整 pg_shell 查询时, 每次获取记录数 foo=#\set FETCH_COUNT 100 调整为每次 ps_shell 每次获取 100 条记录立即返回记录, 然后再继续获取 直接在 pg_shell 中修改配置文件, 只能在当前 pg_shell 中生效, 重新登录 pg_shell 需要重新设置 3 修改配置文件, 调整 pg_shell 查询时, 每次获取记录数 $>${PG_HOME/bin/pg_config sysconfdir /opt/sequoiadb/pgsql/etc 如果显示目录不存在, 自己手动创建即可 $> mkdir p /opt/sequoiadb/pgsql/etc 将需要修改的参数写入配置文件中 $>echo "\\set FETCH_COUNT 100" >> /opt/sequoiadb/pgsql/etc/psqlrc 4 调整 pg_shell 的日志级别 $>sed -i 's/#client_min_messages = notice/client_min_messages = debug1/g' 8

pg_data/postgresql.conf 5 调整 pg 引擎的日志级别 $>sed -i 's/#log_min_messages = warning/log_min_messages = debug1/g' pg_data/postgresql.conf 3 使用 java 客户端连接 PostgreSQL 3.1 修改 PostgreSQL 的连接配置 1 修改 PostgreSQL 的监听地址 $>sed - i "s/#listen_addresses = 'localhost'/listen_addresses = '0.0.0.0'/g" pg_data/postgresql.conf 2 修改信任的机器列表 $>linenum=$(cat - n pg_data/pg_hba.conf grep "# IPv4 local connections:" awk '{print $1'); \ let "linenum=linenum+1";varstr="host all all 0.0.0.0/0 trust"; \ sed - i "${linenum a${varstr" pg_data/pg_hba.conf; 3 重启 PostgreSQL $>bin/pg_ctl stop - s - D pg_data/ - m fast ; bin/postgres - D pg_data/ >> logfile 2>&1 & 3.2 JDBC 连接程序 package com.sequoiadb.sample; import java.sql.*; public class postgresql_sample { static{ try { Class.forName("org.postgresql.Driver"); 9

catch (ClassNotFoundException e) { e.printstacktrace(); public static void main( String[] args ) throws SQLException{ String pghost = "192.168.30.182"; String port = "5432"; String databasename = "foo"; // postgresql process is running in which user String pguser = "sdbadmin"; String url = "jdbc:postgresql://"+pghost+":"+port+"/" + databasename; Connection conn = DriverManager.getConnection(url, pguser, null); Statement stmt = conn.createstatement(); String sql = "select * from sdb_upcase_field "; ResultSet rs = stmt.executequery(sql); boolean isheaderprint = false; while (rs.next()) { ResultSetMetaData md = rs.getmetadata(); int col_num = md.getcolumncount(); if (isheaderprint){ for (int i = 1; i <= col_num; i++) { System.out.print(md.getColumnName(i) + " "); isheaderprint = true; for (int i = 1; i <= col_num; i++) { 10

System.out.print(rs.getString(i) + " "); System.out.println(); stmt.close(); conn.close(); 11