【金仓数据库】KingbaseES在线体验平台:开启国产数据库学习新征程_金仓数据库有在线的吗
【作者主页】Francek Chen
【专栏介绍】 ⌈ ⌈ ⌈大数据与数据库应用 ⌋ ⌋ ⌋ 大数据是规模庞大、类型多样且增长迅速的数据集合,需特殊技术处理分析以挖掘价值。数据库作为数据管理的关键工具,具备高效存储、精准查询与安全维护能力。二者紧密结合,数据库为大数据提供坚实存储与处理基础,在电商、金融、医疗等地方广泛应用,助力企业精准决策、提升运营效率。
文章目录
-
- 前言
- 一、金仓数据库概述
- 二、KingbaseES在线平台简介
- 三、平台注册与登录
-
- (一)注册流程
- (二)登录流程
- 四、KingbaseES平台实战体验
-
- (一)检查数据库版本及服务状态
- (二)模式的创建和管理
- (三)表
- (四)索引
- (五)查询
- (六)视图
- (七)函数
- (八)触发器
- 小结
前言
在数据库技术蓬勃发展的当下,KingbaseES(简称 KES)作为一款具有显著影响力的国产通用数据库产品,凭借其卓越的功能特性与完全自主的知识产权,在竞争激烈的市场环境中脱颖而出,赢得了广泛的关注与认可。为了进一步降低学习门槛,助力开发者和数据库爱好者深入探索 KingbaseES 的强大功能,金仓数据库在线体验平台应运而生。这一创新平台为广大用户搭建了一个零成本、零门槛的学习与实践桥梁,让用户能够便捷地进行功能验证与实操演练。接下来,本文将通过实战测评的方式,全方位、深入地剖析 KingbaseES 在线体验平台的各项功能,助力读者快速掌握并熟练运用这款优秀的国产数据库产品。
一、金仓数据库概述
在当今数字化浪潮席卷各行业的时代,数据作为核心资产,其存储、管理与分析的重要性愈发凸显。金仓数据库(KingbaseES)作为一款国产关系型数据库系统,凭借其卓越的性能和广泛的适用性,在众多数据库产品中脱颖而出,成为金融、电信、互联网等众多行业应对数据挑战的有力武器。金仓数据库在技术架构上独具匠心,融入了大量自主研发的创新功能,在性能、稳定性和安全性等方面实现了显著提升,为用户带来了更为优质的使用体验。
1. 卓越性能,应对复杂查询
在性能方面,金仓数据库展现出了强大的实力。它采用了优化的存储引擎,这一引擎经过精心设计和调优,能够高效地组织和管理数据,大大提高了数据的读写速度。同时,智能查询优化器的运用,使得数据库能够自动分析查询语句,选择最优的执行计划,从而有效缩短查询响应时间。此外,金仓数据库还支持分布式架构,能够将数据分散存储在多个节点上,实现并行处理。在高并发、大数据量的复杂查询任务面前,金仓数据库能够轻松应对,确保系统的高效运行,满足企业对数据处理速度和效率的严格要求。
2. 高可靠性,保障数据安全
对于企业而言,数据的可靠性和安全性至关重要。金仓数据库深知这一点,为用户提供了多种高可用方案。主从复制机制可以实现数据的实时同步,当主数据库出现故障时,从数据库能够迅速接管工作,确保系统的持续可用性。自动故障转移功能则进一步增强了系统的容错能力,能够在检测到故障后自动完成切换,减少人工干预,降低系统停机时间。此外,数据备份与恢复功能为用户的数据安全提供了坚实保障,即使遇到意外情况,用户也能够快速恢复数据,避免数据丢失带来的损失。
3. 强大扩展性,适应多样需求
随着企业业务的不断发展和数据量的持续增长,数据库的扩展性成为了关键因素。金仓数据库支持横向扩展,这意味着用户可以根据实际需求,轻松地增加节点来扩展数据库的处理能力。无论是小型应用还是大型企业级系统,金仓数据库都能够灵活适应,支持海量数据的存储与处理。这种强大的扩展性使得企业无需担心数据库性能瓶颈,能够专注于业务创新和发展。
4. 兼容 PostgreSQL,迁移便捷无忧
金仓数据库与 PostgreSQL 高度兼容,这一特性为用户带来了极大的便利。它支持 PostgreSQL 的 SQL 语法和多种数据类型,使得已有的 PostgreSQL 应用可以轻松迁移到金仓数据库上。企业无需对现有应用进行大规模的改造,即可享受金仓数据库带来的性能提升和功能增强。这种兼容性不仅降低了企业的迁移成本,还缩短了迁移周期,提高了企业的运营效率。
金仓数据库产品架构图如下。
综上所述,金仓数据库以其高性能、高可靠性、强大扩展性和与 PostgreSQL 的高度兼容性,成为了企业应对大数据时代各种挑战的理想选择。尤其是在需要高并发、高可靠性和灵活扩展的场景下,金仓数据库能够为用户提供可靠的解决方案,助力企业在激烈的市场竞争中立于不败之地。
二、KingbaseES在线平台简介
KingbaseES 在线体验平台由中电科金仓(北京)科技股份有限公司搭建。作为 KingbaseES 数据库管理系统的官方体验入口,该平台依托金仓数据库在行业内的深厚积累与卓越口碑,为用户提供了一个便捷、高效的途径,去深入了解并体验这款具有自主知识产权且获得自主原创资质认证的通用数据库产品。KingbaseES 凭借高性能、高可用性和安全性,在政府、金融、电信等众多关键行业得到广泛应用,在线体验平台的推出,进一步降低了用户接触和使用这款优秀数据库产品的门槛。
对于数据库初学者、学生群体以及对数据库技术感兴趣但缺乏实践机会的人而言,KingbaseES 在线体验平台是一个绝佳的学习起点。无需复杂的本地环境搭建,用户只需通过浏览器即可随时随地访问平台,开启数据库学习之旅。平台提供了丰富的教程和示例,从基础的数据库概念、SQL 语法,到高级的数据库管理和优化技巧,都有详细的讲解和操作演示,帮助用户逐步掌握 KingbaseES 的使用方法。
三、平台注册与登录
(一)注册流程
- 访问金仓数据库在线体验平台的官方网站。
- 点击页面右上角的“注册”按钮,进入注册页面。
- 在注册页面中,填写必要的信息,包括用户名、密码、邮箱地址等。
- 点击“注册”按钮,完成注册流程。
(二)登录流程
- 在平台首页,点击“登录”按钮。
- 输入已注册的用户名和密码,点击“登录”按钮。
- 登录成功后,即可进入平台的主界面。
四、KingbaseES平台实战体验
KingbaseES 在线体验平台提供了基础的教学,我们可以通过如下步骤进行测试体验。
(一)检查数据库版本及服务状态
在体验数据库功能前,请先查看当前数据库兼容模式。
查看当前数据库兼容模式,使用如下语句:
show database_mode
数据库模式与选择的模式一致,可继续下一步操作。否则请重新刷新页面,或与管理员联系。
(二)模式的创建和管理
模式又被称为schema,它是用于组织和命名数据库对象(如表、视图、函数等)的逻辑容器。模式是数据库中组织和管理数据库对象的重要机制,它提供了一种逻辑上的命名空间,具备如下优点: 可以避免命名冲突,允许在同一数据库中的不同模式下创建同名对象。 便于权限管理和隔离,每个模式分配不同的访问权限,以此控制用户或角色对特定模式中对象的访问权限,提高数据库的安全性。
下面将介绍模式常见的使用方式:
1. 创建模式
CREATE SCHEMA 用于在当前数据库中创建模式,创建模式时指定的模式名必须与当前数据库中任何现有模式的名称不同。
示例: 创建两个数据库模式kes01
,db02
。
create schema kes01;create schema db01;
2. 查看模式列表
可以通过查看sys_namespace
视图查看当前数据库的模式信息。
select * from sys_namespace where nspname in (\'kes01\',\'db01\');
3. 使用模式
若要在指定模式下创建对象或者访问指定模式下的对象,需要使用模式名限定的对象名。该名称包含模式名以及对象名,他们之间用.
号分开。
示例:
在kes01
下创建db_info
表。
create table kes01.db_info(id int,name varchar(20) );
向表中插入数据。
insert into kes01.db_info values (\'01\',\'kingbase\');
查询表中数据。
select * from kes01.db_info;
4. 更改模式
KingbaseES 支持使用alter schema
语句可以更改模式的相关属性。
示例:
将schema db01
重新命名为db02
。
alter schema db01 rename to db02;
查询新模式信息。
select * from sys_namespace where nspname=\'db02\';
5. 删除模式
KingbaseES 支持使用drop schema
命令进行删除。
drop schema db02 cascade ;drop schema kes01 cascade ;
(三)表
表是 KingbaseES 数据库中最基本的操作对象。一个表描述了一个实体对象,它记录了实体对象的重要信息。KingbaseES 数据库表对象类型是关系表,关系表由简单的列组成,是最常见的表类型。
表的管理包括创建表、修改表和删除表等操作,以及普通表、分区表等的管理。
1. 创建表
创建表customers
客户表。
CREATE TABLE customers ( C_ID INT AUTO_INCREMENT PRIMARY KEY, C_NAME VARCHAR(50) NOT NULL, C_ADDRESS TEXT NOT NULL, C_PHONE VARCHAR(15) NOT NULL);
创建分区表items
商品表。
CREATE TABLE items ( I_ID INT PRIMARY KEY, I_NAME VARCHAR(100) NOT NULL, I_PRICE DECIMAL(10,2) NOT NULL, I_STOCK INT NOT NULL)PARTITION BY RANGE (I_PRICE)( PARTITION p_low VALUES LESS THAN (200), PARTITION p_medium VALUES LESS THAN (500), PARTITION p_high VALUES LESS THAN (1000), PARTITION p_high_price VALUES LESS THAN (MAXVALUE));
创建orders
订单表表。
CREATE TABLE orders ( O_ID INT , O_DATE DATE NOT NULL, C_ID INT NOT NULL, I_ID INT NOT NULL, O_QUANTITY INT NOT NULL, O_TOTAL_PRICE DECIMAL(10,2) NOT NULL, FOREIGN KEY (C_ID) REFERENCES customers(C_ID), FOREIGN KEY (I_ID) REFERENCES items(I_ID));
2. 修改表结构
使用ALTER TABLE
语句,给订单表添加一个主键。
ALTER TABLE orders ADD CONSTRAINT pk_orders PRIMARY KEY(O_ID);
使用ALTER TABLE
语句,给订单表添加一个列comment
列。
alter table orders add column comment varchar(20);
3. 插入示例数据
使用INSERT
命令用于向表中插入数据。示例如下:
向customers
表中插入数据。
INSERT INTO customers (C_NAME, C_ADDRESS, C_PHONE) VALUES(\'Alice Smith\', \'123 Main St, City A\', \'123-456-7890\'),(\'Bob Johnson\', \'456 Oak Ave, City B\', \'234-567-8901\'),(\'Charlie Brown\', \'789 Pine Rd, City C\', \'345-678-9012\'),(\'Diana White\', \'321 Elm St, City D\', \'456-789-0123\'),(\'Edward Green\', \'654 Birch Dr, City E\', \'567-890-1234\'),(\'Frances Hill\', \'987 Maple Ln, City F\', \'678-901-2345\'),(\'George Wright\', \'432 Cedar Rd, City G\', \'789-012-3456\'),(\'Helen King\', \'135 Willow St, City H\', \'890-123-4567\'),(\'Ian Miller\', \'246 Oak Dr, City I\', \'901-234-5678\'),(\'Judy Davis\', \'368 Pine Ave, City J\', \'012-345-6789\');
向items
表中插入数据。
INSERT INTO items (I_ID, I_NAME, I_PRICE, I_STOCK) VALUES(\'1\',\'Laptop\', 1299.99, 50),(\'2\',\'Phone\', 699.99, 75),(\'3\',\'Tablet\', 299.99, 30),(\'4\',\'Monitor\', 199.99, 100),(\'5\',\'Keyboard\', 79.99, 80),(\'6\',\'Mouse\', 49.99, 100),(\'7\',\'Speaker\', 129.99, 40),(\'8\',\'Headphones\', 159.99, 60),(\'9\',\'Printer\', 239.99, 30),(\'10\',\'Scanner\', 179.99, 40);
向custimers
表中插入数据。
INSERT INTO orders (O_ID, O_DATE, C_ID, I_ID, O_QUANTITY, O_TOTAL_PRICE) VALUES(\'1\',\'2023-10-01\', 1, 1, 2, 2599.98), (\'2\',\'2023-10-02\', 2, 2, 1, 699.99), (\'3\',\'2023-10-03\', 3, 3, 3, 899.97), (\'4\',\'2023-10-04\', 4, 4, 5, 999.95), (\'5\',\'2023-10-05\', 5, 5, 4, 319.96), (\'6\',\'2023-10-06\', 6, 6, 2, 99.98), (\'7\',\'2023-10-07\', 7, 7, 1, 129.99), (\'8\',\'2023-10-08\', 8, 8, 3, 479.97), (\'9\',\'2023-10-09\', 9, 9, 1, 239.99), (\'10\',\'2023-10-10\', 10, 10, 5, 899.95);
4. 查看示例数据
查看customers
客户表信息。
select * from customers;
查看items
商品表信息。
select * from items;
查看orders
订单表信息。
select * from orders;
(四)索引
索引是一种与表相关联的数据结构,是为了提高数据检索的性能而建立的。KingbaseES 索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。索引可建立在一个表的一列或多列上,一旦建立,将由 KingbaseES 数据库自动维护和使用,对用户是完全透明的,系统的优化器会根据统计信息确定是否使用索引来提高系统性能。索引逻辑和物理上都独立于与其相关联的表数据。因此,可以删除或创建索引,但不会对索引表产生影响。
1. 创建索引
KingbaseES 使用create index
语句来创建普通b-tree索引。示例如下。
在customers
表的c_name
列上创建索引。
create index indx_c_name on customers(c_name);
在itms
分区表中的i_price
列上创建本地索引。
create index indx_i_price on items (i_price) local;
在order
表的o_id
和o_date
列上创建组合索引。
create index idx_o_i_d on orders (o_id, o_date);
使用create unique index``语句在orders
表中为o_id
列创建唯一索引。
create unique index o_u_id on orders (o_id);
2. 查看索引
通过使用select
语句查询sys_indexes
视图查看相关索引索引。
select * from sys_indexes where schemaname=\'public\';
3. 修改索引
使用alter index
语句可以o_u_id
索引的相关属性信息。示例如下。
使用alter index
语句将o_u_id
索引重命名为indx_rename_u_id
:
alter index o_u_id rename to indx_rename_u_id;
使用alter index
语句将indx_rename_u_id
设置索引填充因子。
alter index indx_rename_u_id set (fillfactor = 60);
4. 重建索引
使用reindex index
语句重建indx_i_price
索引:
reindex index indx_c_name;
使用reindex table
语句重建表上所有索引:
reindex table orders;
5. 删除索引
使用drop index
语句删除索引:
drop index indx_rename_u_id;
(五)查询
查询是从一个或多个表或视图中检索数据的操作。顶级SELECT语句称为查询,嵌套在另一个SQL语句中的查询称为子查询。本节描述一些查询与子查询类型以及如何使用它们。
SELECT 命令的一般语法是:
[WITH with_queries] SELECT select_list FROM table_expression [sort_specification]
示例查询
- 简单查询:查询所有订单信息。
SELECT O_ID, O_DATE, C_ID, I_ID, O_QUANTITY, O_TOTAL_PRICE FROM orders;
- 关联查询:查询客户的姓名和他们下的订单总数。
SELECT I_NAME, I_STOCK FROM items GROUP BY I_NAME, I_STOCK;
- 分组查询:查询每个商品的库存情况(按价格分类)。
SELECT c.C_NAME, COUNT(o.O_ID) AS order_count FROM customers c JOIN orders o ON c.C_ID = o.C_ID GROUP BY c.C_NAME;
- 子查询:查询订单金额大于 500 的订单信息。
SELECT * FROM orders WHERE O_TOTAL_PRICE > ( SELECT AVG(O_TOTAL_PRICE) FROM orders);
- with子句:计算每个客户的总消费金额,并筛选出消费金额最高的前5名客户
WITH customer_total_amount AS ( SELECT c.C_NAME, SUM(o.O_TOTAL_PRICE) AS total_amount FROM customers c JOIN orders o ON c.C_ID = o.C_ID GROUP BY c.C_NAME)SELECT * FROM customer_total_amountORDER BY total_amount DESCLIMIT 5;
(六)视图
视图是一个或多个表的逻辑表示形式。与表不同,视图既不分配存储空间,也不包含数据,而是通过定义的一个查询,从它所引用的基表中提取或派生出数据。视图的数据来自它所依赖基表,基表可以是表或其他视图。在视图上执行的所有操作实际上都指向基表。
1. 视图创建
通过create view
命令来进行创建视图,示例如下。
- 销售统计视图
功能:按日期汇总订单金额和数量。
CREATE OR REPLACE VIEW sales_summary ASSELECT DATE(o.O_DATE) AS order_date, COUNT(o.O_ID) AS order_count, SUM(o.O_TOTAL_PRICE) AS total_salesFROM orders oGROUP BY DATE(o.O_DATE);
- 库存预警视图
功能:监控库存量低于 10 的商品。
CREATE OR REPLACE VIEW low_stock_items ASSELECT i.I_ID, i.I_NAME, i.I_STOCKFROM items iWHERE i.I_STOCK < 60;
- 客户消费记录视图
功能:展示客户的订单历史和总消费金额。
CREATE OR REPLACE VIEW customer_purchase_history ASSELECT c.C_NAME, o.O_DATE, i.I_NAME, o.O_QUANTITY, o.O_TOTAL_PRICEFROM customers cJOIN orders o ON c.C_ID = o.C_IDJOIN items i ON o.I_ID = i.I_ID;
2. 视图查询
查询销售统计视图。
SELECT * FROM sales_summary WHERE order_date = \'2023-10-01\';
查询库存预警视图。
SELECT * FROM low_stock_items;
查询Alice Smith的订单历史和总消费金额。
SELECT * FROM customer_purchase_history WHERE C_NAME = \'Alice Smith\';
3. 视图信息查询
通过使用select
语句查询sys_views
视图查看相关索引索引。示例如下。
select * from sys_views where schemaname=\'public\';
4. 删除视图
通过drop view
命令来进行删除视图对象。示例如下。
drop view customer_purchase_history;
(七)函数
SQL 函数在 KingbaseES 数据库中作为内置组件存在,适用于多种 SQL 语句,需注意区分于由 PL/SQL 编写的用户自定义函数。
调用这些 SQL 函数时,若参数类型不符,KingbaseES 会自动将其转换为函数所需的数据类型,确保执行无碍。
创建函数
计算订单的折扣金额。
CREATE OR REPLACE FUNCTION calculate_discount_amount(_o_id INT)RETURNS DECIMAL(8,2) AS $$DECLARE total_price DECIMAL(8,2);BEGIN -- 从 orders 表中获取订单的总价 SELECT O_TOTAL_PRICE INTO total_price FROM orders WHERE O_ID = _o_id; -- 假设折扣率为 10% RETURN total_price * 0.10;END$$LANGUAGE plpgsql;
查看订单ID=1的原价。
SELECT o_total_price from orders where o_id=1;
查看订单 ID=1 的折扣金额。
SELECT calculate_discount_amount(1) AS discount_amount;
(八)触发器
触发器通过在数据操作时自动执行任务,强化了数据完整性和系统的自动化能力。合理设计和使用触发器,可以提升应用的效率、可靠性和安全性,但在开发和维护过程中需综合考虑性能影响和复杂性问题。
下面已一个简单示例来说明。
1. 创建触发器
- 插入触发器
功能:每当插入一条新订单时,触发器会从商品表中减去相应数量的商品库存。
CREATE TRIGGER update_stock_AFTER_INSERT AFTER INSERT ON ordersFOR EACH ROWBEGIN UPDATE items SET I_STOCK = I_STOCK - NEW.O_QUANTITY WHERE I_ID = NEW.I_ID;END;
查看当前库存情况。
select * from items where i_id=1;
往order
订单表中插入一条数据。
INSERT INTO orders VALUES(\'11\',\'2023-11-01\', 1, 1, 1, 200);
再试试查看订单情况。
select * from items where i_id=1;
2. 删除触发器
drop trigger update_stock_AFTER_INSERT;
小结
KingbaseES 在线体验平台为数据库初学者、学生以及对数据库技术感兴趣的人提供了一个便捷、高效的实践环境。通过该平台,用户可以轻松地学习、实践和验证 KingbaseES 数据库的各项功能,从而快速掌握并熟练运用这款优秀的国产数据库产品。
展望未来,随着技术的不断发展和用户需求的日益多样化,KingbaseES 在线体验平台将继续优化和完善功能,为用户提供更加丰富、实用的学习资源和实践机会。同时,金仓数据库也将不断创新和升级产品性能,为用户提供更加优质、高效的数据库解决方案,助力企业在数字化时代取得更大的成功。
欢迎 点赞👍 | 收藏⭐ | 评论✍ | 关注🤗