前言
随着信创项目的不断推广,信创数据库也越来越重要,越来越多的人都参与到了国产数据库的学习,Lightdb的体系结构展开实验,对Lightdb有初步的认识。
一、Lightdb简介
由恒生电子股份有限公司推出具有独立自主品牌金融属性的恒生数据库(简称:LightDB),致力于为金融机构提供更好的数据库相关服务
二、从实验中理解Lightdb的体系结构
2.1.一个lightdb实例包含多个数据库(database)
创建多个数据库:csdb1,csdb2,csdb3
1.创表空间tbs_cs
create tablespace tbs_cs location '/usr/local/lightdb/lightdb-x/13.3-22.1/data/tbs_cs';
2.创建库
create database csdb1 with tablespace=tbs_cs;
create database csdb2 with tablespace=tbs_cs;
create database csdb3 with tablespace=tbs_cs;
实验结论:在一个lightdb上,一个实例中可以创建许多的数据库(csdb1\csdb2\csdb3),可以在不同的数据库之间切换
2.2.一个数据库可以被多个用户访问
创建用户并授权
create user lightdb1 password 'lightdb@123';
create user lightdb2 password 'lightdb@123';
create user lightdb3 password 'lightdb@123';
alter user lightdb1 Superuser;
alter user lightdb2 Superuser;
alter user lightdb3 Superuser;
在每个连接访问中分别创建表t1\t2\t3
#ltsql -d csdb1 -h 192.168.19.191 -U lightdb1 -p 5432
create table t1(name char(10));
insert into t1 values('hello!1');
select * from t1;
#ltsql -d csdb1 -h 192.168.19.191 -U lightdb2 -p 5432
create table t2(name char(10));
insert into t2 values('hello!2');
select * from t2;
#ltsql -d csdb1 -h 192.168.19.191 -U lightdb3 -p 5432
create table t3(name char(10));
insert into t3 values('hello!3');
select * from t3;
实验结论:数据库csdb1可以被lightdb1、lightdb2、lightdb3访问(分别数据库中创建一张表、插入一条数据和查询)。由此可以说明一个数据库可以被多个用户来访问
2.3.一个用户可以访问多个数据库
实验结论:用户lightdb1可以多次连接不同的数据库(csdb1\csdb2\csdb3),并可以在不同的数据库中创建数据库对象
2.4.用户一次只能连接到一个数据库,没法访问其他数据库的对象
实验结论:当用户lightdb1连接到数据库csdb1上时没法访问数据库csdb2上的表
2.5.在一个数据库中可以创建多个模式(Schema)
比如:在一个机构组织的数据库中,如果有很多应用,可以为每个应用创建一个模式
例子:使用用户lightdb1连接到数据库csdb1,为csdb1创建3额模式
create schema s1lightdb;
create schema s2lightdb;
create schema s3lightdb;
在不同模式下创建同名的表
create table s1lightdb.cs(id int);
create table s2lightdb.cs(id int);
create table s3lightdb.cs(id int);
create or replace view my_tables as select table_catalog,table_schema,table_name,table_type from information_schema.tables where table_schema not in('pg_catalog','information_schema','dbe_perf');
实验结论: 一个用户连接到数据库后,可以在这个数据库中创建多个模式,并且不通模式下可以有同名的表,如果表有同名情况最好使用schemaname.tablename来访问一张表
2.6.一个库可以存储在多个表空间中
创建新的表空间
create tablespace tbs_cs_new location '/usr/local/lightdb/lightdb-x/13.3-22.1/data/tbs_cs_new';
实验结论:在没有创建tbs_cs1之前,csdb1库中的所有表都在tbs_cs,但在postgres库中创建的表空间csdb1库新建的表tbs_cs_1同样可以使用表空间tbs_cs_1,只需在建表的时候指定参数tablespace即可
总结
以上就是今天要分享的内容,本文仅仅简单介绍了lightdb的体系结构中存储的一部分,更多的内容(内存结构、进程结构、物理文件等)会在后续的章节更大家一起学习。