首页 > 数据库 >分析型数据库

分析型数据库

时间:2022-11-08 18:32:58浏览次数:32  
标签:分析 java tbase 数据库 System stmt sql import

软件简介

TBase

  • 具备高性能可扩展的分布式事务能力,支持 RC 和 RR 两种隔离级别;
  • 通过安全、管理、审计三权分立体系,提供全方位的数据安全保证机制;
  • 支持高性能分区表,可使得数据检索效率成倍提升;
  • SQL 方面兼容 2003 标准、PostgreSQL 语法和常用 Oracle 函数&数据类型、窗口函数等;
  • 提供大小商户数据分离、冷热数据分离等高效的数据治理能力

TBase 架构:

分析型数据库_java

集群中有三种节点类型,各自承担不同的功能,通过网络连接成为一个系统。这三种节点类型分别是:

  • Coordinator:协调节点,对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图,CN 存储系统的全局元数据。
  • Datanode:处理存储本节点相关的元数据,每个节点还存储数据的一个分片。在功能上,DN 节点负责完成执行协调节点分发的执行请求。
  • GTM: 全局事务管理器(Global transaction manager.),负责管理集群事务信息,同时管理集群的全局对象,比如序列,除此之外 GTM 上不提供其他的功能。

TBase 功能介绍:

  • 分布式事务全局一致性能力:通过拥有自主专利的分布式事务一致性技术,包括两阶段提交(Two Phase Commit)以及全局时钟(Global Timestamp)的策略来保证在全分布式环境下的事务一致性。
  • SQL兼容能力:SQL2003 标准、PostgreSQL 语法、常用 Oracle 函数&数据类型、UDF/UDAF、常见窗口函数、JSON/JSONB/XML/数组等多种 NoSQL 类型 、递归 WITH、无锁 DDL 操作、扩展插件等。
  • HTAP能力:提供 OLTP 以及 OLAP 两个平面视角 ,OLTP 业务运行在 datanode 主节点上,OLAP 业务运行在 datanode 节点的备节点上,二者的数据同步采用流复制的方式来进行。
  • 读写分离能力:提供了读写和只读两个平面视角,读写流量请求由主节点来处理,只读流量请求由备节点来处理,主备节点的数据同步采用流复制的方式来进行。
  • 卓越的数据安全保障能力:通过三权分立的体系,将传统数据库系统 DBA 的角色分解为三个相互独立的角色:安全管理员、审计管理员、数据管理员;基于此提出安全策略,主要细分为三个部分:数据加密、数据脱敏访问、强制访问控制,三者组合提供多个层级的数据安全保障能力。

分析型数据库_postgresql_02

  • 高效的数据治理能力:数据倾斜治理,用以解决数据分布不均带来的存储以及性能压力;冷热数据分级存储 ,用以降低业务的存储成本、提升热数据的性能。
  • 多核并行计算能力:节点内部采用了并行计算,根据表大小同时启动多个进程来协同完成一个查询。
  • 多租户能力:基于节点组 node group 的集群内多租户解决方案,做到数据库集群内部的业务和资源隔离,多个业务在TBase内部相互隔离的运行。
  • 多级容灾能力:采用强同步复制来保证主从数据完全一致,保障主节点故障时数据无丢失;提供基于任意时间点的恢复特性来防止误操作带来的数据丢失。
  • 在线扩容能力:通过引入shard map层(shard map 中每一项存储 shardid 和 DN 的 映射关系 ), 在新加节点时,只需要把一些 shard map 中的 shardid 映射到新加的节点,并把对应的数据搬迁过去就可以了,大大缩短扩容时间。
  • 丰富的周边生态能力:PostGIS、异构数据复制、LVS 负载均衡、FDW 联邦能力等。

 TBase 适用场景:

  • 在国产化落地、业务核心领域去 O 场景;
  • 对 HTAP 混合事务分析应用模型有需要的业务场景;
  • 对物联网地理信息系统有需求的业务场景;
  • 对实时高并发环境下的分布式事务强一致性有要求的业务(如金融、证券等业务)场景;
  • 对企业级数据安全、审计、治理应用相关功能有需求的业务场景;
  • 对高可用、异地容灾、7*24 小时服务能力有需求的业务场景;
  • 有海量存储计算需求、弹性扩容、在线扩容需求的业务场景;
  • 对异构数据互通共享有需求的业务场景。

JAVA开发

1.1、创建数据表

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class createtable {
public static void main( String args[] )
{
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:15432/postgres?currentSchema=public&binaryTransfer=false","tbase", "tbase");
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "create table tbase(id int,nickname text) distribute by shard(id) to group default_group" ;
stmt.executeUpdate(sql);
stmt.close();
c.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Table created successfully");
}
}

使用普通协议插入数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class insert {
public static void main(String args[]) {
Connection c = null;
Statement stmt = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:15432/postgres?currentSchema=public&binaryTransfer=false","tbase", "tbase");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
stmt = c.createStatement();
String sql = "INSERT INTO tbase (id,nickname) "
+ "VALUES (1,'tbase');";
stmt.executeUpdate(sql);
sql = "INSERT INTO tbase (id,nickname) "
+ "VALUES (2, 'pgxz' ),(3,'pgxc');";
stmt.executeUpdate(sql);
stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Records created successfully");
}
}

使用扩展协议插入数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;
import java.util.Random;
public class insert_prepared {
public static void main(String args[]) {
Connection c = null;
PreparedStatement stmt;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:15432/postgres?currentSchema=public&binaryTransfer=false","tbase", "tbase");
c.setAutoCommit(false);
System.out.println("Opened database successfully");
//插入数据
String sql = "INSERT INTO tbase (id,nickname) VALUES (?,?)";
stmt = c.prepareStatement(sql);
stmt.setInt(1, 9999);
stmt.setString(2, "tbase_prepared");
stmt.executeUpdate();
//插入更新
sql = "INSERT INTO tbase (id,nickname) VALUES (?,?) ON CONFLICT(id) DO UPDATE SET nickname=?";
stmt = c.prepareStatement(sql);
stmt.setInt(1, 9999);
stmt.setString(2, "tbase_prepared");
stmt.setString(3, "tbase_prepared_update");
stmt.executeUpdate();
stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Records created successfully");
}
}

copy from 加载文件到表

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.postgresql.copy.CopyManager;
import org.postgresql.core.BaseConnection;
import java.io.*;
public class copyfrom {
public static void main( String args[] )
{
Connection c = null;
Statement stmt = null;
FileInputStream fs = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:15432/postgres?currentSchema=public&binaryTransfer=false","tbase", "tbase");
System.out.println("Opened database successfully");
CopyManager cm = new CopyManager((BaseConnection) c);
fs = new FileInputStream("/data/tbase/tbase.csv");
String sql = "COPY tbase FROM STDIN DELIMITER AS ','";
cm.copyIn(sql, fs);
c.close();
fs.close();
} catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Copy data successfully");
}
}

copy to 导出数据到文件

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.postgresql.copy.CopyManager;
import org.postgresql.core.BaseConnection;
import java.io.*;
public class copyto {
public static void main( String args[] )
{
Connection c = null;
Statement stmt = null;
FileOutputStream fs = null;
try {
Class.forName("org.postgresql.Driver");
c = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:15432/postgres?currentSchema=public&binaryTransfer=false","tbase", "tbase");
System.out.println("Opened database successfully");
CopyManager cm = new CopyManager((BaseConnection) c);
fs = new FileOutputStream("/data/tbase/tbase.csv");
String sql = "COPY tbase TO STDOUT DELIMITER AS ','";
cm.copyOut(sql, fs);
c.close();
fs.close()
} catch ( Exception e ) {
System.err.println( e.getClass().getName()+": "+ e.getMessage() );
System.exit(0);
}
System.out.println("Copy data successfully");
}
}


关注公众号 soft张三丰 

分析型数据库_sql_03

标签:分析,java,tbase,数据库,System,stmt,sql,import
From: https://blog.51cto.com/u_15501087/5834177

相关文章

  • 20220926 18. 认识与分析登录文件
    18.1什么是登录文件登录文件可以记录系统在什么时间、哪个主机、哪个服务、出现了什么讯息等信息,这些信息也包括使用者识别数据、系统故障排除须知等信息。如果你能够......
  • mysql 5.7安装及使用binlog日志恢复数据库
    目录mysql5.7安装及使用binlog日志恢复数据库binlog日志介绍安装mysql5.7开启Binlog日志查看binlog日志状态和内容通过Binlog恢复数据清理MySQL的binlog日志自动删除手动......
  • Python 生成MySQL数据库的表结构到word文档
    原理:读取系统表的数据,调用python-docx库生成word文档。importpymysqlfromdocximportDocumentfromdocx.sharedimportInchesdocument=Document()document.a......
  • 【AGC】云数据库Server调用接口报错“2016”问题分析
     问题背景: 开发者在服务器端的服务中集成云数据库服务的ServerSDK就可以在服务器上直接管理云侧数据库中的数据,调用它提供的接口,完成相关服务功能开发。可是有些开发者......
  • 【性能分析】平均负载
    目录一、平均负载介绍二、工具说明三、典型场景分析1、CPU密集型2、IO密集型3、多进程四、思考参考:(1)linux性能优化实战(2)LinuxLoadAverages:SolvingtheMystery一、......
  • Kubelet源码分析(一):工作原理以及启动流程分析
    一、概要kubelet是运行在每个节点上的主要的“节点代理”,每个节点都会启动kubelet进程,用来处理Master节点下发到本节点的任务,按照PodSpec描述来管理Pod和其中的容......
  • 极简springboot+springdataJPA的使用,连接数据库
    1、首先在springboot的基础上引入maven依赖:一个mysql的驱动,一个整合的JPA使用包<!--https://mvnrepository.com/artifact/mysql/mysql-connector-java--><dep......
  • 《数据结构与算法分析(C++语言描述)》
    在看这本书总结了笔记,并分享出来。有问题请及时联系博主:​​Alliswell_WP​​,转载请注明出处。书籍:《数据结构与算法分析(C++语言描述)》作者:LarryNyhoff著、黄达明等译源代......
  • mysql insert into select锁全表情况分析
    前言  Insertintoselect请慎用。这天xxx接到一个需求,需要将表A的数据迁移到表B中去做一个备份。本想通过程序先查询查出来然后批量插入。但xxx觉得这样有点慢,需要耗费......
  • 分析 k8s 容器 内存 CPU使用率
    分析k8s容器内存CPU使用率安装metrics-server参考githubhttps://github.com/kubernetes-sigs/metrics-server如下命令安装mkdirmetrics-serverwgethttps://git......