[数据库] 探索金仓数据库:零门槛在线体验与实践

116 0
Honkers 2025-8-27 17:07:53 来自手机 | 显示全部楼层 |阅读模式

一、金仓数据库概述

金仓数据库的核心特点包括:

  1. 高性能:金仓数据库基于先进的存储引擎,能够处理大规模数据的存储和查询任务。其独特的分布式架构和高效的查询优化机制使得其在大数据、高并发的场景下依然能保持优异的性能表现。

  2. 高可靠性:金仓数据库支持多种高可用方案,包括主从复制、自动故障转移、数据备份和恢复等,确保了数据库系统的高可用性与数据的安全性。

  3. 强大的扩展性:金仓数据库能够横向扩展,支持分布式集群,适应不同规模的数据处理需求,可以根据用户的需求进行弹性扩展。

  4. 多功能支持:金仓数据库支持多种类型的索引、事务、存储过程等,能够满足不同行业和业务的数据库需求。


二、金仓数据库在线体验平台

金仓数据库在线体验平台的推出,旨在让用户能够更加便捷地接触和体验数据库的功能。尤其对于初学者和开发者而言,在线平台能够降低学习和使用的门槛。通过在线体验平台,用户可以快速尝试金仓数据库的各项功能,进行基础的数据库管理、查询优化、性能调优等操作。

“零门槛体验 + 多场景交互”,金仓数据库在线体验平台现已在金仓社区正式上线!通过精简功能模块和贴心场景引导,助力数据库使用者、开发者、架构师及DBA快速上手核心操作,无论是技术预研还是选型验证都能轻松搞定!

平台独创Oracle/PostgreSQL/MySQL/SQL Server四模合一环境,开启体验之前可以自由选择数据库模式。

实现四大主流数据库95%以上核心特性兼容,例如:

  • MySQL模式:支持AUTO_INCREMENT、LIMIT分页、ON DUPLICATE KEY UPDATE等。
  • Oracle模式:原生运行ROWNUM分页、DECODE()函数及PL/SQL块。
  • SQL Server模式:兼容T-SQL流程控制(如IF...ELSE)及全局临时表(##前缀)。
  • 系统视图:如MySQL模式下支持information_schema.tables视图,结构与原库一致。

平台有介绍模式常见的使用方式: 

 我们尝试创建表:

创建表customers客户表

  1. CREATE TABLE customers (
  2. C_ID INT AUTO_INCREMENT PRIMARY KEY,
  3. C_NAME VARCHAR(50) NOT NULL,
  4. C_ADDRESS TEXT NOT NULL,
  5. C_PHONE VARCHAR(15) NOT NULL
  6. );
复制代码

创建分区表items商品表

  1. CREATE TABLE items (
  2. I_ID INT PRIMARY KEY,
  3. I_NAME VARCHAR(100) NOT NULL,
  4. I_PRICE DECIMAL(10,2) NOT NULL,
  5. I_STOCK INT NOT NULL
  6. )
  7. PARTITION BY RANGE (I_PRICE)
  8. (
  9. PARTITION p_low VALUES LESS THAN (200),
  10. PARTITION p_medium VALUES LESS THAN (500),
  11. PARTITION p_high VALUES LESS THAN (1000),
  12. PARTITION p_high_price VALUES LESS THAN (MAXVALUE)
  13. );
复制代码

 创建orders订单表表

  1. CREATE TABLE orders (
  2. O_ID INT ,
  3. O_DATE DATE NOT NULL,
  4. C_ID INT NOT NULL,
  5. I_ID INT NOT NULL,
  6. O_QUANTITY INT NOT NULL,
  7. O_TOTAL_PRICE DECIMAL(10,2) NOT NULL,
  8. FOREIGN KEY (C_ID) REFERENCES customers(C_ID),
  9. FOREIGN KEY (I_ID) REFERENCES items(I_ID)
  10. );
复制代码

 现在向里面插入数据

使用INSERT 命令用于向表中插入数据。示例向customers表中插入数据:

  1. INSERT INTO customers (C_NAME, C_ADDRESS, C_PHONE) VALUES
  2. ('Alice Smith', '123 Main St, City A', '123-456-7890'),
  3. ('Bob Johnson', '456 Oak Ave, City B', '234-567-8901'),
  4. ('Charlie Brown', '789 Pine Rd, City C', '345-678-9012'),
  5. ('Diana White', '321 Elm St, City D', '456-789-0123'),
  6. ('Edward Green', '654 Birch Dr, City E', '567-890-1234'),
  7. ('Frances Hill', '987 Maple Ln, City F', '678-901-2345'),
  8. ('George Wright', '432 Cedar Rd, City G', '789-012-3456'),
  9. ('Helen King', '135 Willow St, City H', '890-123-4567'),
  10. ('Ian Miller', '246 Oak Dr, City I', '901-234-5678'),
  11. ('Judy Davis', '368 Pine Ave, City J', '012-345-6789');
复制代码

查看

查看customers客户表信息

  1. select * from customers;
复制代码

kingbaseES使用 create index 语句来创建普通b-tree索引。 

在customers表的c_name列上创建索引。

  1. create index indx_c_name on customers(c_name);
复制代码

使用create unique index语句在orders表中为o_id列创建唯一索引。

  1. select * from pg_indexes where schemaname='public';
复制代码

查询是从一个或多个表或视图中检索数据的操作。顶级SELECT语句称为查询,嵌套在另一个SQL语句中的查询称为子查询。本节描述一些查询与子查询类型以及如何使用它们。

SELECT 命令的一般语法是:

  1. [WITH with_queries] SELECT select_list FROM table_expression [sort_specification]
复制代码

视图是一个或多个表的逻辑表示形式。与表不同,视图既不分配存储空间,也不包含数据,而是通过定义的一个查询,从它所引用的基表中提取或派生出数据。视图的数据来自它所依赖基表,基表可以是表或其他视图。在视图上执行的所有操作实际上都指向基表。

通过create view命令来进行创建视图,示例如下

  • 销售统计视图

功能:按日期汇总订单金额和数量。

  1. CREATE OR REPLACE VIEW sales_summary AS
  2. SELECT
  3. DATE(o.O_DATE) AS order_date,
  4. COUNT(o.O_ID) AS order_count,
  5. SUM(o.O_TOTAL_PRICE) AS total_sales
  6. FROM orders o
  7. GROUP BY DATE(o.O_DATE);
复制代码
  • 库存预警视图

功能:监控库存量低于 10 的商品。

  1. CREATE OR REPLACE VIEW low_stock_items AS
  2. SELECT
  3. i.I_ID,
  4. i.I_NAME,
  5. i.I_STOCK
  6. FROM items i
  7. WHERE i.I_STOCK < 60;
复制代码

SQL函数在KingbaseES数据库中作为内置组件存在,适用于多种SQL语句,需注意区分于由PL/SQL编写的用户自定义函数。

调用这些SQL函数时,若参数类型不符,KingbaseES会自动将其转换为函数所需的数据类型,确保执行无碍。

示例

计算订单的折扣金额。

  1. CREATE OR REPLACE FUNCTION calculate_discount_amount(_o_id INT)
  2. RETURNS DECIMAL(8,2) AS $$
  3. DECLARE
  4. total_price DECIMAL(8,2);
  5. BEGIN
  6. -- 从 orders 表中获取订单的总价
  7. SELECT O_TOTAL_PRICE INTO total_price
  8. FROM orders
  9. WHERE O_ID = _o_id;
  10. -- 假设折扣率为 10%
  11. RETURN total_price * 0.10;
  12. END$$
  13. LANGUAGE plpgsql;
复制代码

触发器通过在数据操作时自动执行任务,强化了数据完整性和系统的自动化能力。合理设计和使用触发器,可以提升应用的效率、可靠性和安全性,但在开发和维护过程中需综合考虑性能影响和复杂性问题。

下面已一个简单示例来说明。

创建触发器

示例

  • 插入触发器

功能:每当插入一条新订单时,触发器会从商品表中减去相应数量的商品库存。

  1. CREATE TRIGGER update_stock_AFTER_INSERT
  2. AFTER INSERT ON orders
  3. FOR EACH ROW
  4. BEGIN
  5. UPDATE items
  6. SET I_STOCK = I_STOCK - NEW.O_QUANTITY
  7. WHERE I_ID = NEW.I_ID;
  8. END;
复制代码

 平台采用新手友好设计,提供场景化引导教学,

大大降低学习成本。用户可跟随向导任务,从零开始创建模式、表、函数、触发器等,快速熟悉金仓数据库的各项操作。

平台采用实时交互模式,用户在选定兼容模式后可直接输入SQL语句,系统自动检测语法并即时输出执行结果。

1. 创建数据库

  1. -- 创建一个新的数据库
  2. CREATE DATABASE my_database;
复制代码

2.连接数据库

连接到刚刚创建的数据库 my_database。

  1. -- 连接到指定数据库
  2. \c my_database;
复制代码

3.创建表

  1. -- 创建一个表用于存储员工信息
  2. CREATE TABLE employees (
  3. id SERIAL PRIMARY KEY, -- 自动生成唯一ID
  4. first_name VARCHAR(50), -- 员工的名字
  5. last_name VARCHAR(50), -- 员工的姓
  6. birth_date DATE, -- 员工的出生日期
  7. hire_date DATE, -- 员工的入职日期
  8. salary DECIMAL(10, 2), -- 员工的薪水,保留两位小数
  9. department VARCHAR(50) -- 员工所属的部门
  10. );
复制代码

4. 插入数据

  1. -- 向 employees 表中插入数据
  2. INSERT INTO employees (first_name, last_name, birth_date, hire_date, salary, department)
  3. VALUES
  4. ('John', 'Doe', '1990-01-15', '2015-06-01', 55000.00, 'Engineering'),
  5. ('Jane', 'Smith', '1985-03-22', '2012-04-12', 60000.00, 'Marketing'),
  6. ('Emily', 'Johnson', '1992-11-30', '2018-01-10', 45000.00, 'Human Resources');
复制代码

5. 查询数据

  1. -- 查询所有员工信息
  2. SELECT * FROM employees;
  3. -- 查询所有员工的姓名和薪水
  4. SELECT first_name, last_name, salary FROM employees;
  5. -- 查询薪水大于50000的员工
  6. SELECT * FROM employees
  7. WHERE salary > 50000;
复制代码

6. 更新数据

  1. -- 更新员工薪水
  2. UPDATE employees
  3. SET salary = salary + 5000
  4. WHERE department = 'Engineering';
  5. -- 更新员工的部门
  6. UPDATE employees
  7. SET department = 'Sales'
  8. WHERE first_name = 'Emily' AND last_name = 'Johnson';
复制代码

7. 删除数据

  1. -- 删除部门为 Sales 的所有员工
  2. DELETE FROM employees
  3. WHERE department = 'Sales';
  4. -- 删除所有薪水低于 50000 的员工
  5. DELETE FROM employees
  6. WHERE salary < 50000;
复制代码

8. 添加列

  1. -- 在 employees 表中添加一个新列用于存储员工的电子邮件
  2. ALTER TABLE employees
  3. ADD COLUMN email VARCHAR(100);
复制代码

9. 删除表

  1. -- 删除整个表(慎用,删除后无法恢复)
  2. DROP TABLE employees;
复制代码

10. 创建索引

  1. -- 创建一个索引,以便快速查询员工的姓氏
  2. CREATE INDEX idx_last_name ON employees (last_name);
复制代码

11. 事务处理

在金仓数据库中,可以使用事务来确保多个 SQL 操作的原子性和一致性。

  1. -- 开始事务
  2. BEGIN;
  3. -- 插入新员工数据
  4. INSERT INTO employees (first_name, last_name, birth_date, hire_date, salary, department)
  5. VALUES ('Michael', 'Brown', '1988-07-25', '2020-02-10', 70000.00, 'Sales');
  6. -- 更新现有员工的薪水
  7. UPDATE employees
  8. SET salary = 65000.00
  9. WHERE first_name = 'John' AND last_name = 'Doe';
  10. -- 如果没有错误,提交事务
  11. COMMIT;
  12. -- 如果发生错误,回滚事务
  13. -- ROLLBACK;
复制代码

12. 多表联接查询

  1. -- 假设我们有一个 departments 表,用于存储部门信息
  2. CREATE TABLE departments (
  3. id SERIAL PRIMARY KEY,
  4. name VARCHAR(50) NOT NULL
  5. );
  6. -- 向 departments 表中插入数据
  7. INSERT INTO departments (name)
  8. VALUES ('Engineering'), ('Marketing'), ('Human Resources');
  9. -- 联接查询 employees 和 departments 表,获取员工及其所属部门的详细信息
  10. SELECT e.first_name, e.last_name, e.salary, d.name AS department_name
  11. FROM employees e
  12. JOIN departments d ON e.department = d.name;
复制代码

13. 子查询

  1. -- 查询薪水高于公司平均薪水的员工
  2. SELECT first_name, last_name, salary
  3. FROM employees
  4. WHERE salary > (SELECT AVG(salary) FROM employees);
复制代码

14. 视图(View)

  1. -- 创建一个视图,用于查询所有薪水大于50000的员工信息
  2. CREATE VIEW high_salary_employees AS
  3. SELECT first_name, last_name, salary
  4. FROM employees
  5. WHERE salary > 50000;
  6. -- 查询视图中的数据
  7. SELECT * FROM high_salary_employees;
复制代码

15. 备份与恢复

金仓数据库支持数据备份与恢复,通过 pg_dump 和 pg_restore 工具可以方便地进行备份与恢复操作。

  1. pg_dump -U username -F c -b -v -f /path/to/backup_file.backup my_database
复制代码
  1. pg_restore -U username -d my_database -v /path/to/backup_file.backup
复制代码

16. 使用 JSON 数据类型

金仓数据库支持 JSON 类型,可以用于存储和查询半结构化的数据。

  1. -- 创建一个包含 JSON 字段的表
  2. CREATE TABLE products (
  3. id SERIAL PRIMARY KEY,
  4. name VARCHAR(100),
  5. details JSONB -- JSONB 类型,用于存储 JSON 数据
  6. );
  7. -- 插入包含 JSON 数据的记录
  8. INSERT INTO products (name, details)
  9. VALUES
  10. ('Laptop', '{"brand": "Dell", "processor": "Intel i7", "ram": "16GB"}'),
  11. ('Smartphone', '{"brand": "Apple", "model": "iPhone 12", "storage": "128GB"}');
  12. -- 查询 JSON 数据
  13. SELECT name, details->>'brand' AS brand
  14. FROM products
  15. WHERE details->>'ram' = '16GB';
复制代码

17. 使用窗口函数

窗口函数允许对查询结果进行复杂的分析,通常用于计算排名、聚合等。

  1. -- 为每个员工计算其薪水在同一部门内的排名
  2. SELECT first_name, last_name, department, salary,
  3. RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS salary_rank
  4. FROM employees;
复制代码

18. 创建触发器

触发器可以在特定事件(如插入、更新、删除)发生时自动执行指定的操作。

  1. -- 创建一个触发器,在插入新员工时记录其加入时间
  2. CREATE OR REPLACE FUNCTION log_employee_insert()
  3. RETURNS TRIGGER AS $$
  4. BEGIN
  5. INSERT INTO employee_logs (employee_id, action, action_time)
  6. VALUES (NEW.id, 'INSERT', NOW());
  7. RETURN NEW;
  8. END;
  9. $$ LANGUAGE plpgsql;
  10. -- 创建触发器,触发函数在插入员工时执行
  11. CREATE TRIGGER employee_insert_trigger
  12. AFTER INSERT ON employees
  13. FOR EACH ROW
  14. EXECUTE FUNCTION log_employee_insert();
复制代码

总的来说,金仓数据库在线体验平台是一个非常有价值的工具,它能够帮助用户更好地理解和使用金仓数据库,在实际应用中提升数据管理的效率和质量。无论是个人用户还是企业用户,都可以通过这个平台获得丰富的实践经验,进一步挖掘金仓数据库的潜力。


三、金仓数据库的技术架构

1. 金仓数据库的核心架构

金仓数据库的架构设计注重性能和可扩展性,特别适用于大规模数据处理和高并发场景。其主要组成部分包括:

  • 分布式架构:金仓数据库支持多节点分布式部署,可以横向扩展处理能力。每个节点可处理独立的任务,且通过一致性协议进行同步,确保数据的高可用性和一致性。

  • 高可用性与容错机制:金仓数据库实现了自动故障切换和数据冗余备份机制,能够在系统故障或硬件故障时快速恢复,并保持数据的完整性和一致性。

  • 智能查询优化器:金仓数据库配备了智能查询优化器,能够自动选择最佳执行计划,从而大大提升查询性能,尤其是在复杂查询或大数据量操作时,展现出较强的优势。

2. 金仓数据库的事务与并发控制

金仓数据库采用了多版本并发控制(MVCC)机制,以确保在高并发环境下的数据一致性与隔离性。每个事务都有独立的视图,不会直接干扰其他事务的操作,极大地提升了事务的并发处理能力。

  • ACID 特性:金仓数据库严格遵循 ACID(原子性、一致性、隔离性、持久性)事务特性,确保数据的可靠性和一致性,特别适用于金融、电信等对数据完整性要求高的行业。

  • 锁机制:金仓数据库支持行级锁、表级锁等多种锁机制,能够在保证高并发的同时,避免事务冲突和死锁问题。


四、金仓数据库在线体验平台的优势

1. 零门槛使用体验

金仓数据库在线体验平台的最大优势在于它的零门槛特性。用户无需安装数据库软件或配置环境,只需注册账户并登录,即可体验金仓数据库的功能。对于初学者和非技术人员而言,这是一个非常便捷的工具,能够在短时间内上手数据库的基本操作。

2. 全面的操作功能

在线平台提供了与本地部署一致的数据库功能,包括数据库创建、表结构设计、数据导入导出、查询执行、事务管理等常见操作。用户不仅可以使用 SQL 语句进行数据操作,还可以通过图形化界面快速创建和管理数据库对象。

3. 实践案例与学习资源

平台提供了丰富的实践案例,用户可以按照案例进行实际操作,深入了解金仓数据库的应用场景与优化技巧。平台还提供了详细的文档和技术支持,帮助用户解决使用过程中遇到的问题。

4. 实时性能监控

金仓数据库在线平台提供了实时的性能监控功能,用户可以查看数据库实例的运行状态,包括 CPU 使用率、内存使用、查询响应时间等性能指标。这个功能对于开发者和运维人员来说尤为重要,能够帮助他们实时监控数据库的运行状态,确保系统的高效性。


五、金仓数据库的实际应用案例

1. 金融行业的应用

金仓数据库被广泛应用于金融行业,尤其是在银行、证券、保险等领域。其高可用性、数据安全性和高并发处理能力,完美契合金融行业对数据管理的需求。例如,某银行采用金仓数据库构建了其交易系统,能够实时处理数百万笔交易,且在高并发场景下依然保持稳定。

2. 电信行业的应用

电信行业通常需要处理大量的用户数据和实时通讯数据。金仓数据库支持大规模数据的高效存储和查询,成为电信公司首选的数据库解决方案。通过金仓数据库,电信公司能够高效地管理用户账户、通话记录、短信数据等。

3. 政府行业的应用

政府部门需要管理大量的公共事务数据,如人事信息、税务信息、社保信息等。金仓数据库凭借其数据安全性和扩展性,成为政府信息化建设的关键组成部分。通过金仓数据库,政府能够提高数据管理效率,保障数据安全。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行