• [技术解读] GaussDB全密态数据库对应用能够提供透明的加解密能力
    全密态数据库   全密态数据库是指对应用能够提供透明的加解密能力,在数据库系统中将数据的全生命周期以密文形式进行处理,同时密钥掌握在授权用户手中的数据库管理系统。当数据拥有者在客户端完成数据加密并发送给服务端后,即使攻击者借助系统脆弱点窃取用户数据时仍然无法获得有效、有价值的数据信息,从而起到保护数据隐私的能力。由于整个业务数据流在数据处理过程中都是以密文形态存在,因此通过全密态数据库可以实现如下优势:数据安全:数据产生后即刻加密,保护数据在传输、处理、存储、同步和备份等过程中的全生命周期安全。管理可信:由授权用户掌握密钥,进行数据解密及验证,符合要求后,才可获得明文数据,而其他任何人员,包括操作系统、数据库的管理及运维人员都无法接触到明文数据。法律合规:随着数据安全法律法规相继发布,密评、等保、分类分级等要求出台,对数据全生命周期的保护有了更严格的要求。全密态数据库的总体架构示意图如图1 密态数据库总体架构所示,其完整形态包括纯软方案和软硬结合两种方案。纯软密态查询在数据库服务侧全程存储密文,通过密码学算法在密文空间直接查询运算,保障数据隐私不泄露。而软硬融合全密态则通过机密计算,借助可信执行环境(安全硬件隔离或逻辑隔离明文计算空间),通过访问控制,实现计算及数据对外“不可见”,防止数据泄露。两种方案都需要客户端加解密驱动的密钥管理、语法解析及加解密计算。    
  • [技术解读] GaussDB-MySQL一键式迁移工具gs_rep_portal
    MySQL一键式迁移工具gs_rep_portalGaussDB特性简介gs_rep_portal是一个用Java编写的,在linux系统上运行的,集成了全量迁移、增量迁移、反向迁移、数据校验的工具。gs_rep_portal支持以上工具的一键式安装上述工具,设定迁移任务,任务根据用户设定的执行计划顺序的调用相应工具完成每个迁移步骤,并能实时展示每个步骤的状态、进度、异常原因等。客户价值通过使用gs_rep_portal工具,可完成一键启动包含多个迁移工具的迁移计划,可以同时开启多个迁移计划。特性描述gs_rep_portal是一个用Java编写的,在linux系统上运行的,集成了全量迁移、增量迁移、反向迁移、数据校验的工具。gs_rep_portal支持以上工具的一键式安装上述工具,设定迁移任务,任务根据用户设定的执行计划顺序的调用相应工具完成每个迁移步骤,并能实时展示每个步骤的状态、进度、异常原因等。gs_rep_portal支持全量迁移工具在指定版本和架构的系统上进行离线安装。特性增强无。特性约束portal在执行增量迁移、反向迁移、增量校验时需要使用curl工具。同一个迁移计划的增量迁移和反向迁移不会同时开启,如果一个计划中包含了增量迁移和反向迁移,那么需要用户手动停止增量迁移,启动反向迁移。当用户启动反向迁移之后,无法再启动增量迁移。portal使用的workspace.id只能为小写字母与数字的组合。portal在启动多个计划时,需要保证MySQL数据库实例各不相同,openGauss端数据库各不相同,且同一个MySQL数据库实例和GaussDB端数据库的增量迁移和反向迁移不能同时开启。依赖关系依赖各迁移工具可以正常使用。
  • [技术干货] GaussDB-Index-advisor_索引推荐
    GaussDB Index-advisor:索引推荐GaussDB特性简介GaussDB Index-advisor工具是一个覆盖多种任务级别和使用场景的数据库智能索引推荐工具,其具备单Query索引推荐功能、虚拟索引功能、workload级别索引推荐功能,可以为用户提供可靠的索引建议。客户价值为客户提供快速可靠的索引推荐功能,极大简化了运维人员的工作。特性描述单query索引推荐功能支持用户在数据库中直接进行操作,本功能基于查询语句的语义信息和数据库的统计信息,对用户输入的单条查询语句生成推荐的索引;虚拟索引功能支持用户在数据库中直接进行操作,本功能将模拟真实索引的建立,避免真实索引创建所需的时间和空间开销,用户基于虚拟索引,可通过优化器评估该索引对指定查询语句的代价影响;对于workload级别的索引推荐,用户可通过运行数据库外的脚本使用此功能,本功能将包含有多条DML语句的workload作为输入,最终生成一批可对整体workload的执行表现进行优化的索引。特性增强无。特性约束GaussDB数据库状态正常、客户端能够正常连接。当前执行用户下安装有gsql工具,该工具路径已被加入到PATH环境变量中。具备Python3.6+的环境。依赖关系无。
  • [技术干货] 大数据干货合集(2025年4月)
    Dify开源平台介绍cid:link_2AI应用开发解决方案cid:link_0云原生时代成本治理cid:link_3云原生时代的应用挑战和趋势cid:link_4数据建模介绍cid:link_5数据模型三要素cid:link_6层次模型介绍cid:link_7层次模型的优缺点cid:link_8网状模型介绍cid:link_9关系模型的数据操纵与完整性约束cid:link_10数据库系统的三级模式结构cid:link_11数据库两级映像cid:link_12数据库系统的三级模式结构小结cid:link_13数据库体系结构cid:link_1关系操作https://bbs.huaweicloud.com/forum/thread-0275181210563924023-1-1.html
  • [技术解读] 使用gsql连接GaussDB
    使用gsql连接GaussDB:从入门到生产级实践一、gsql工具概述GaussDB的gsql命令行工具是基于PostgreSQL兼容协议开发的数据库客户端,支持以下核心功能:多协议连接(TCP/IP、SSL、Unix Domain Socket)SQL脚本执行与结果格式化输出数据库对象管理(表、视图、存储过程等)事务控制与批处理操作性能监控与调试bash# 查看版本信息 gsql --version二、环境准备与安装配置安装配置bash# 官方安装包方式 wget https://mirrors.huaweicloud.com/gaussdb/3.5.0/gaussdb-client_3.5.0-2_amd64.deb sudo dpkg -i gaussdb-client_3.5.0-2_amd64.deb # 环境变量配置 echo 'export PATH=/opt/gaussdb/client/bin:$PATH' >> ~/.bashrc source ~/.bashrc三、基础连接实践3.1 连接命令语法bashgsql [OPTIONS] [DATABASE] [HOST:PORT]3.2 标准连接示例bash# 连接本地默认实例 gsql -h localhost -p 6321 -U gaussdba -d testdb # 连接带SSL的远程集群 gsql --sslmode=require -h 192.168.1.100 -p 6321 -U admin -d finance_db3.3 认证机制配置bash# 创建用户并授权 CREATE USER analyst WITH PASSWORD 'SecurePass123' CREATEDB; GRANT CONNECT ON DATABASE testdb TO analyst; # 使用连接字符串指定认证参数 gsql -h db-gauss-0 -p 6321 -U analyst -d testdb \ --connect-timeout=30 \ --authentication=md5四、高级连接技巧4.1 会话参数配置bash# 在连接时设置事务隔离级别 gsql -c "SET TRANSACTION ISOLATION LEVEL READ COMMITTED" -h db-node -U user # 配置批量提交参数 gsql --batch-size=1000 --commit-on-exit4.2 SSL连接验证bash# 查看SSL证书链 openssl s_client -connect db-gauss-0:6321 -tlsextdebug -status # 自定义信任证书 gsql --sslcert=/path/to/client.crt \ --sslkey=/path/to/client.key \ --sslrootcert=/path/to/ca.pem4.3 连接池管理bash# 使用连接池脚本示例 #!/bin/bash POOL_SIZE=10 MAX_LIFETIME=300 for i in {1..$POOL_SIZE}; do gsql --session-timeout=$MAX_LIFETIME -d db & done五、SQL执行与结果处理5.1 命令行模式操作bash# 进入交互式模式 gsql -h localhost -U admin -d gaussdb # 执行SQL并格式化输出 \gexec -c "SELECT * FROM employees WHERE department = 'IT'" --format=vertical # 导出查询结果 \copy (SELECT * FROM sales_data) TO '/tmp/sales.csv' WITH CSV HEADER; 5.2 脚本化执行bash# 执行SQL脚本 gsql -f /path/to/script.sql -h db-node -U user -d target_db # 脚本内容示例 -- script.sql \set ON_ERROR_STOP=1 BEGIN; INSERT INTO logs (event_time, message) VALUES ('2023-10-01 12:00:00', 'Batch insert started'); DO $$ DECLARE cnt INT DEFAULT 0; BEGIN LOOP INSERT INTO test_table VALUES (generate_series(1,1000)); cnt := cnt + 1000; IF cnt >= 100000 THEN EXIT; END IF; END LOOP; END $$; COMMIT; 六、生产环境最佳实践6.1 连接参数调优bash# 最大连接数配置 gsql --max_connections=50 --connection_timeout=10 # 网络传输优化 gsql --tcp_keepalive=60 --tcp_nodelay=16.2 安全加固措施bash# 启用登录失败锁定 ALTER USER analyst WITH LOGIN FAILED 3; # 使用双因素认证 CREATE ROLE auditor WITH LDAP OPTION; 6.3 监控与日志bash# 启用查询日志 gsql --log-queries=true --log-variables=true # 分析连接状态 SHOW STATUS LIKE 'Threads_connected'; 七、典型故障排除7.1 连接拒绝处理bash# 检查服务状态 ps aux | grep gaussdb # 验证防火墙规则 telnet db-gauss-0 6321 ufw status numbered7.2 认证失败排查bash# 查看用户权限 SELECT usename, role FROM pg_authid WHERE usename = 'invalid_user'; # 重置密码 ALTER USER analyst WITH PASSWORD 'NewSecurePass'; 7.3 SSL握手错误bash# 更新CA证书 cp /etc/ssl/certs/ca-certificates.pem ~/.postgresql/root.crt # 降级SSL协议 gsql --sslmode=prefer八、未来演进与生态集成8.1 云原生支持bash# 使用Kubernetes服务发现 gsql -h k8s-db-cluster.default.svc.cluster.local -n db-namespace # 配置Helm连接参数 values.yaml: connection: host: db-gauss-0 port: 6321 ssl: true8.2 智能诊断工具bash# 自动SQL分析 gsql --auto-explain ON --query-plan-cache-size=1024 # 会话分析器 SHOW SESSION STATISTICS; 结语建议结合GaussDB的GDS工具包和CloudEye监控系统,构建完整的数据库访问治理方案。通过持续优化连接策略和监控指标,企业可降低70%以上的数据库连接相关故障,提升OLTP系统吞吐量达3倍以上。延伸学习:高性能调优指南:GaussDB Connection Pool Best Practices安全白皮书:GaussDB Security Architecture
  • [技术干货] GaussDB中创建、修改和删除用户
    GaussDB中创建、修改和删除用户:企业级权限管理体系实战引言在分布式数据库GaussDB中,用户账户管理是数据安全的核心防线。本文基于GaussDB 3.0+版本特性,深入解析用户生命周期管理、权限精细化控制与企业级安全实践,提供金融、电商等5个行业场景的实战案例,并揭示GaussDB在用户行为审计、资源配额限制等方面的独特优势。通过本文,读者将掌握从账户创建到安全策略落地的全链路管理能力。一、GaussDB用户管理架构解析1.1 用户权限模型sql-- 查看用户权限元数据 SELECT usename, has_superuser, replication, createdb, connlimit FROM pg_authid WHERE usename = 'db_admin'; ​角色分级体系:SUPERUSER > DATABASE_ADMIN > ROLE > USER​权限继承机制:通过GRANT OPTION实现权限级联传递​资源配额控制:CONNECT LIMIT限制并发连接数,MEMORY QUOTA限制会话内存1.2 与PostgreSQL的兼容性对比特性 GaussDB PostgreSQL用户创建语法 CREATE USER兼容PostgreSQL语法 标准SQL语法密码策略 支持PASSWORD子句强制复杂度 需插件支持资源配额管理 内置MEMORY QUOTA等参数 需扩展配置多租户支持 通过SCHEMA+RESOURCE GROUP实现 依赖外部工具二、用户生命周期管理2.1 创建用户基础语法sql-- 创建普通用户并设置密码 CREATE USER sales_team WITH PASSWORD 'Secure@2023!' CONNECT LIMIT 10; -- 创建带资源限制的超级用户 CREATE USER db_admin SUPERUSER MEMORY QUOTA 2GB CONNECT LIMIT 5; 2.2 高级用户配置sql-- 创建包含多个角色的复合用户 CREATE USER audit_user LOGIN ROLE admin_role, auditor_role ENCRYPTED PASSWORD 'Encrypted@Pass!'; -- 设置会话超时时间 ALTER USER marketing_team SET statement_timeout = '10min'; 2.3 删除与迁移用户sql-- 删除用户及所有对象 DROP USER hr_team CASCADE; -- 迁移用户权限到新账户 GRANT ALL PRIVILEGES ON DATABASE db_prod TO new_admin; REVOKE ALL PRIVILEGES FROM old_admin; DROP USER old_admin; 三、权限精细化控制3.1 权限授予与回收sql-- 对象级权限管理 GRANT SELECT (salary) ON employees TO hr_team WITH GRANT OPTION; -- 方案级权限批量授予 GRANT CREATE ON SCHEMA sales TO dev_team; -- 回收危险权限 REVOKE EXECUTE ON FUNCTION payment_process FROM finance_team; 3.2 角色与权限继承sql-- 创建权限角色 CREATE ROLE audit_role WITH LOGIN; -- 为角色分配权限 GRANT SELECT ON pg_catalog.pg_stat_activity TO audit_role; -- 用户继承角色权限 GRANT audit_role TO marketing_user; 3.3 权限冲突解决sql-- 查看权限有效性 SHOW GRANT FOR USER sales_manager; -- 解决权限遮盖问题 REVOKE SELECT ON orders FROM sales_team; GRANT SELECT (order_id, customer_id) ON orders TO sales_team; 四、企业级最佳实践4.1 金融行业权限模型sql-- 创建分级角色体系 CREATE ROLE teller WITH LOGIN CONNECT LIMIT 15 PASSWORD 'Teller@2023!'; CREATE ROLE supervisor WITH LOGIN SUPERUSER CONNECT LIMIT 5 MEMORY QUOTA 4GB; -- 实施最小权限原则 GRANT SELECT (account_balance) ON accounts TO teller; GRANT UPDATE (transaction_log) ON transactions TO supervisor; 4.2 电商营销权限控制sql-- 限时促销活动权限 CREATE ROLE promo_manager WITH TEMPORARY ROLE admin_role EXPIRES '2023-12-31'; -- 自动回收临时权限 DO $$ BEGIN EXECUTE format( 'DROP ROLE %I', (SELECT role_name FROM pg_roles WHERE role_name = 'promo_manager') ); END $$ LANGUAGE plpgsql; 4.3 多租户环境隔离sql-- 为租户创建独立用户组 CREATE USER tenant_1001 WITH RESOURCE GROUP tenant_rsg_1001 QUOTA 50GB COMMENT 'Acme Inc.'; -- 自动创建租户用户模板 CREATE OR REPLACE PROCEDURE create_tenant_user(p TenantID INT) LANGUAGE plpgsql AS $$ BEGIN EXECUTE format( 'CREATE USER tenant_%I RESOURCE GROUP tenant_rsg_%I QUOTA 10GB WITH PASSWORD ''%I''', p, p, MD5(RANDOM()::TEXT) ); END $$; 五、安全与审计5.1 密码策略强化sql-- 创建强密码策略 ALTER SYSTEM SET password_policy = 'enforce'; -- 修改用户密码复杂度 ALTER USER hr_team SET PASSWORD 'HR@2023!A1b2C3d4'; 5.2 审计日志配置sql-- 启用细粒度审计 ALTER SYSTEM SET audit_level = 'VERBOSE'; -- 查询用户操作日志 SELECT user_name, operation, object_type, timestamp FROM pg_audit WHERE operation IN ('LOGIN', 'DROP', 'GRANT') AND user_name = 'db_admin'; 5.3 登录失败监控sql-- 创建失败登录告警 CREATE OR REPLACE FUNCTION check_login_failures() RETURNS TRIGGER AS $$ BEGIN IF (NEW.status = 'FAILED') THEN EXECUTE format( 'NOTIFY alert_channel, JSON_build_object( "severity", "CRITICAL", "event", "LOGIN_FAILED", "user", NEW.user, "ip", NEW.client_addr, "count", (SELECT COUNT(*) FROM pg_audit WHERE user = NEW.user AND status = ''FAILED'') )' ); END IF; RETURN NEW; END $$ LANGUAGE plpgsql; CREATE TRIGGER login_audit AFTER INSERT ON pg_audit FOR EACH ROW EXECUTE FUNCTION check_login_failures(); 六、故障排查案例6.1 用户无法登录sql-- 检查账户状态 SELECT usename, passwd, valid_until FROM pg_authid WHERE usename = 'audit_user'; -- 重置密码 ALTER USER audit_user WITH PASSWORD 'New@2023!'; 6.2 权限不足报错sql-- 查看权限链 SHOW GRANT FOR USER sales_team; -- 添加缺失权限 GRANT SELECT ON orders TO sales_team; 6.3 会话数超过限制sql-- 查看当前会话 SHOW PROCESSLIST; -- 终止超额会话 CANCEL PID; 七、附录:用户管理命令速查操作类型 SQL命令示例 核心参数创建用户 CREATE USER [OPTIONS] PASSWORD, CONNECT LIMIT修改用户 ALTER USER [NAME] [OPTIONS] SET PASSWORD, ADD ROLE删除用户 DROP USER [NAME] [CASCADE]授权权限 GRANT [PRIVILEGES] ON [OBJECT] TO USER/ROLE WITH GRANT OPTION回收权限 REVOKE [PRIVILEGES] FROM [OBJECT] CASCADE查看权限 SHOW GRANT FOR USER用户密码重置 ALTER USER SET PASSWORD结语在GaussDB中,用户管理不仅是技术操作,更是企业数据安全战略的重要组成部分。
  • [技术解读] GaussDB中创建、修改和删除Schema
    GaussDB中创建、修改和删除Schema:企业级数据库架构管理实战引言在分布式数据库GaussDB中,Schema作为数据组织的核心逻辑单元,不仅是多租户架构实现的基础,更是资源隔离、权限管控和性能优化的关键载体。本文基于GaussDB 3.0+版本特性,深入解析Schema的创建、修改和删除全链路管理,提供金融、电商等5个行业场景的实战案例,并揭示企业级环境下的Schema设计规范与运维要点。通过本文,读者将掌握从Schema生命周期管理到高性能架构设计的完整能力体系。一、GaussDB Schema架构与核心特性1.1 Schema技术原理sql-- 查看Schema元数据存储结构 SELECT relname, relkind, nspname FROM pg_catalog.pg_class JOIN pg_catalog.pg_namespace ON pg_class.relnamespace = pg_namespace.oid WHERE relkind IN ('S', 'P'); -- S=Schema, P=Package​Namespace层级:Database → Schema → Object的三级组织架构​多租户支持:通过Schema实现客户数据完全隔离(支持单租户模式下的多Schema)​资源配额:可为每个Schema独立设置存储空间和QPS限制​兼容性特性:完全兼容PostgreSQL的Schema语法规范1.2 分布式架构下的Schema特性特性 GaussDB Schema 传统数据库Schema​存储分布 数据按哈希算法均匀分布到各节点 依赖文件系统目录结构​并行查询 支持跨Schema并行扫描 受限于单机文件系统​资源隔离 独立CPU/内存配额控制 需通过数据库参数配置​动态扩展 支持在线扩容和Schema迁移 通常需要停机操作二、Schema生命周期管理2.1 创建Schema基础语法sql-- 创建普通Schema CREATE SCHEMA sales AUTHORIZATION user1 LOCATION '/path/to/sales' RESOURCE_GROUP rsg_sales QUOTA 50GB WITH (VERSIONING = ON); -- 创建带压缩的Schema CREATE SCHEMA analytics COMPRESSION 'lz4' WITH (TABLESPACE = 'ts_analytics'); 2.2 动态修改Schema配置sql-- 修改存储路径(需迁移数据) ALTER SCHEMA marketing SET LOCATION '/new/path/marketing'; -- 扩展配额并启用版本控制 ALTER SCHEMA hr ADD QUOTA 200GB SET VERSIONING = ON; 2.3 删除与迁移Schemasql-- 保留数据的Schema迁移 CREATE SCHEMA archive AS sales INCLUDING ALL; -- 彻底删除Schema及所有对象 DROP SCHEMA production CASCADE; 三、高级Schema管理技巧3.1 权限精细化控制sql-- Schema级权限设置 GRANT CREATE ON SCHEMA analytics TO ROLE data_team; REVOKE SELECT ON SCHEMA sales FROM PUBLIC; -- 对象级细粒度控制 REVOKE UPDATE (salary) ON TABLE employees FROM USER hr_admin; 3.2 跨Schema查询优化sql-- 创建跨Schema视图 CREATE VIEW cross_schema_report AS SELECT s.order_id, c.customer_name, o.order_date FROM sales.orders o JOIN marketing.customers c ON o.customer_id = c.customer_id; -- 配置连接参数优化 SET search_path TO sales,marketing; 3.3 Schema版本控制sql-- 实现Schema演化 ALTER SCHEMA v1 RENAME TO v2; CREATE SCHEMA v1 AS v2 INCLUDING ALL; 四、企业级最佳实践4.1 多租户架构设计sql-- 客户户号映射Schema CREATE SCHEMA tenant_001 RESOURCE GROUP tenant_rsg QUOTA 10GB COMMENT 'Client ACME Inc.'; -- 自动创建Tenant Schema的存储过程 CREATE OR REPLACE PROCEDURE create_tenant_schema(p TenantID INT) LANGUAGE plpgsql AS $$ BEGIN EXECUTE format( 'CREATE SCHEMA tenant_%I RESOURCE GROUP tenant_rsg_%I QUOTA 5GB', p, p ); END $$; 4.2 监控与运维策略sql-- 查询Schema资源使用情况 SELECT nspname AS schema_name, pg_size_pretty(pg_total_relation_size(n.oid)) AS total_size, COUNT(*) AS object_count FROM pg_catalog.pg_namespace n WHERE nspname NOT IN ('pg_catalog', 'information_schema') GROUP BY nspname ORDER BY total_size DESC; -- 自动清理闲置Schema DO $$ DECLARE r RECORD; BEGIN FOR r IN SELECT nspname FROM pg_catalog.pg_namespace WHERE nspname LIKE 'temp_%' AND NOT EXISTS ( SELECT 1 FROM pg_catalog.pg_class WHERE relnamespace = pg_namespace.oid ) LOOP EXECUTE format('DROP SCHEMA %I CASCADE', r.nspname); END LOOP; END $$; 五、性能调优与监控5.1 查询优化sql-- 使用分区裁剪提示 SELECT /*+ PARTITION(sale_date) */ * FROM sales WHERE sale_date BETWEEN '2023-10-01' AND '2023-11-30'; 5.2 分布式监控sql-- 查看Schema数据分布 SELECT partition_name, tablespace_name, size_mb, row_count, active_writers FROM pg_catalog.pg_partitions WHERE tablename = 'orders'; 5.3 热点数据迁移sql-- 自动识别并迁移热点分区 EXECUTE format( 'ALTER TABLE %I REDISTRIBUTE PARTITION %I', 'orders', 'p202312' ); 六、典型故障排查案例6.1 Schema权限异常sql-- 检查会话搜索路径 SHOW search_path; -- 验证角色权限 SELECT has_schema_privilege('user1', 'sales', 'CREATE'); 6.2 跨Schema查询失败sql-- 检查数据库连接参数 SHOW current_search_path; -- 配置永久生效的搜索路径 ALTER DATABASE db SET search_path TO public,sales; 结语在GaussDB中,Schema管理是构建企业级数据库治理体系的核心能力。
  • [技术干货] GaussDB默认权限机制
    数据库对象创建后,进行对象创建的用户就是该对象的所有者。集群安装后默认情况下,未开启三权分立,数据库系统管理员具有与对象所有者相同的权限。也就是说对象创建后,默认只有对象所有者或者系统管理员可以查询、修改和销毁对象,以及通过GRANT将对象的权限授予其他用户。为使其他用户能够使用对象,必须向用户或包含该用户的角色授予必要的权限。GaussDB支持以下的权限:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、CREATE、CONNECT、EXECUTE、USAGE、ALTER、DROP、COMMENT、INDEX和VACUUM。不同的权限与不同的对象类型关联。有关各权限的详细信息,请参见GRANT。要撤销已经授予的权限,请参见REVOKE。对象所有者的权限(例如ALTER、DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。对象所有者可以撤销自己的普通权限(SELECT、INSERT、UPDATE、DELETE),例如,使表对自己以及其他人只读,系统管理员用户除外。系统表和系统视图要么只对系统管理员可见,要么对所有用户可见。标识了需要系统管理员权限的系统表和视图只有系统管理员可以查询。有关信息,请参见系统表和系统视图。数据库提供对象隔离的特性,对象隔离特性开启时,用户只能查看有权限访问的对象(表、视图、字段、函数),系统管理员不受影响。有关信息,请参见ALTER DATABASE。不建议用户修改系统表和系统视图的权限。创建和管理分区表GaussDB Kernel数据库支持的分区表为范围分区表,列表分区表,哈希分区表。范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期,例如将销售数据按照月份进行分区。列表分区表:将数据中包含的键值分别存储在不同的分区中,依次将数据映射到每一个分区,分区中包含的键值由创建分区表时指定。哈希分区表:将数据根据内部哈希算法依次映射到每一个分区中,包含的分区个数由创建分区表时指定。分区表和普通表相比具有以下优点:改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。均衡I/O:可以把不同的分区映射到不同的磁盘以平衡I/O,改善整个系统性能。普通表若要转成分区表,需要新建分区表,然后把普通表中的数据导入到新建的分区表中。因此在初始设计表时,请根据业务提前规划是否使用分区表创建和管理索引索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。所以是否要为表增加索引,索引建立在哪些字段上,是创建索引前必须要考虑的问题。需要分析应用程序的业务处理、数据使用、经常被用作查询的条件或者被要求排序的字段来确定是否建立索引。索引建立在数据库表中的某些列上。因此,在创建索引时,应该仔细考虑在哪些列上创建索引。在经常需要搜索查询的列上创建索引,可以加快搜索的速度。在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。在经常使用连接的列上创建索引,可以加快连接的速度。在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间。在经常使用WHERE子句的列上创建索引,加快条件的判断速度。为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引。
  • [技术干货] 关系操作
    关系模型中常用的关系操作包括查询(query)操作和更新操作两大部分,而更新操作又可分为插入(insert)、删除(delete)、修改(update)等操作。关系的查询表达能力很强,因此查询操作是关系操作中最主要的部分。查询操作又可进一步分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(difference)、交(intersection)、笛卡儿积等操作。其中选择、投影、并、差、笛卡儿积是5种基本操作,其他操作可以用基本操作来定义和导出,就像乘法可以用加法来定义和导出一样。关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为成组数据处理(set-at-a-time processing),即一次一个集合的操作方式。相应地,层次模型和网状模型的数据操作方式则为一次一个记录(record-at-a-time)的方式。这里强调一下,关系操作的所有输入和输出均是关系,包括关系操作的中间结果也是关系。关系数据语言的分类早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数(relationalalgebra)和关系演算(relational calculus)。关系代数用对关系的运算来表达査询要求,关系演算则用谓词来表达查询要求。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力,简称关系完备性。已经证明关系代数、元组关系演算和域关系演算三种关系数据语言在表达能力上是等价的,都具有完备的表达能力。
  • [技术干货] 数据库体系结构
    根据计算机的系统结构,从数据库最终用户角度来看,数据库系统可分为集中式数据库系统、客户-服务器(浏览器/应用服务器/数据库服务器)数据库系统、并行数据库系统、分布式数据库系统和云计算环境下的数据库系统(云数据库系统)等。这是数据库系统外部的体系结构。1.集中式数据库系统集中式数据库系统的数据库管理系统、数据库和应用程序都在一台计算机上。在小型机和大型机上的集中式数据库系统一般是多用户系统,即多个用户通过各自的终端运行不同的应用系统,共享数据库。微型计算机上的数据库系统一般是单用户的。2.客户-服务器数据库系统在客户-服务器数据库系统中,数据库管理系统、数据库驻留在服务器上,而应用程序放置在客户机上(微型计算机或工作站),客户机和服务器通过网络进行通信。在这种结构中客户机负责提供业务数据处理流程和应用程序界面,当要存取数据库中的数据时就向服务器发出请求,服务器接收客户机的请求后进行处理,并将客户要求的数据返回给客户机。随着互联网技术的应用,客户-服务器两层结构已经发展为三层或多层结构。三层结构一般是指浏览器/应用服务器/数据库服务器结构。用户界面采用统一的浏览器方式,应用服务器上安装应用系统或应用模块,数据库服务器上安装数据库管理系统和数据库。两层或三层结构对数据库管理系统的功能进行了合理的分配,减轻了数据库服务器的负担,从而使服务器有更多的能力完成事务处理和数据访问控制,支持更多的用户,提高系统的性能。3.并行数据库系统并行数据库系统是在并行计算机上运行的具有并行处理能力的数据库系统,是数据库技术与并行计算技术相结合的产物。并行计算机系统有共享内存型、共享磁盘型、非共享型以及混合型等。并行计算技术利用多处理机并行处理产生的规模效益来提高系统的整体性能。并行数据库系统发挥了多处理机的优势,采用并行查询处理技术和并行数据分布与管理技术,具有高性能、高可用性、高扩展性等优点。
  • [技术干货] 数据库系统的三级模式结构小结
    数据库系统的三级模式结构小结在数据库的三级模式结构,其中,模式(即全局逻辑结构)是数据库的核心与关键,它独立于数据库的其他层次。因此设计数据库模式结构时应首先确定数据库的逻辑模式。内模式依赖于数据库的全局逻辑结构,但独立于数据库的用户视图(即外模式),也独立于具体的存储设备。它将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。外模式面向具体的应用程序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应的外模式不能满足其视图要求时,该外模式就得做相应改动。所以设计外模式时应充分考虑到应用的扩充性。特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。数据库的两级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需修改。数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。另外,数据的组织和存取交由数据库管理系统负责,简化了应用程序的编制,大大减少了应用程序的开发和维护成本。
  • [技术干货] 数据库两级映像
    外模式/模式映像前已提及,模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对于同一个模式,可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像来定义该外模式与模式之间的对应关系。这些映像定义通常包含在各自外模式的描述中。当模式改变时(如增加新的关系、新的属性,改变属性的数据类型等),由数据库管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,因而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。模式/内模式映像数据库只有一个模式,也只有一个内模式,所以模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在内部是如何表示的。该映像定义通常包含在模式描述中。当数据库的存储结构改变时(如选用了另一种存储结构),由数据库管理员对模式/内模式映像做相应改变,可以使模式保持不变,因而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。数据库系统的三级模式结构小结在数据库的三级模式结构,其中,模式(即全局逻辑结构)是数据库的核心与关键,它独立于数据库的其他层次。因此设计数据库模式结构时应首先确定数据库的逻辑模式。内模式依赖于数据库的全局逻辑结构,但独立于数据库的用户视图(即外模式),也独立于具体的存储设备。它将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
  • [技术干货] 数据库系统的三级模式结构
    虽然实际的数据库管理系统产品种类很多,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但它们在体系结构上通常都具有相同的特征,即采用三级模式结构并提供两级映像功能。数据库系统的三级模式结构是指数据库系统是由模式、外模式和内模式三级构成。模式模式是所有用户的公共数据视图。它是数据库系统模式结构的中间层,不涉及数据的物理存储细节和硬件环境,且与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。模式实际上是数据库数据在逻辑级上的视图。一个数据库对应一个模式。数据库模式以某一种数据模型为基础,综合考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成,数据项的名称、类型、取值范围等,而且要定义数据之间的联系,以及与数据有关的安全性、完整性要求。数据库管理系统提供模式数据定义语言来严格地定义模式。外模式外模式也称子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述。外模式是数据库用户的数据视图是与某一应用有关的数据的逻辑表示。一个数据库可以有多个外模式。由于它是各个用户的数据视图,如果不同的用户在应用需求、看待数据的方式、对数据保密的要求等方面存在差异,则其外模式描述就是不同的。即使模式中的同一数据,在不同的外模式中的结构、类型、长度、保密级别等都可能不同。此外同一外模式也可以为某一用户的多个应用系统所使用,但一个应用程序只能使用一个外模式。外模式是保证数据库安全性的一个有力措施。每个用户只能看见和访问所对应的外模式中的数据,数据库中的其余数据是不可见的。数据库管理系统提供外模式数据定义语言来严格地定义外模式。内模式内模式也称物理模式或存储模式,一个数据库只有一个内模式。它是对数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。例如,记录采用哪种方式存储,是堆存储还是按照某个(些)属性值的升(降)序存储,或按照属性值聚簇存储;索引采用什么方式组织,是B+树索引还是哈希索引;数据是否压缩存储,是否加密:数据的存储记录结构有何规定,如采用定长结构或变长结构、一个记录不能跨物理页存储等等。
  • [技术干货] 关系模型的数据操纵与完整性约束
    关系模型的数据操纵与完整性约束关系模型的数据操纵主要包括查询、插入、删除和更新数据,这些操作必须满足关系的完整性约束。关系的完整性约束包括实体完整性、参照完整性和用户定义的完整性三大类,其具体含义将在后续内容中介绍。关系模型中的数据操纵是集合操作,操作对象和操作结果都是关系,即若干元组的集合;而层次模型和网状模型中的数据操纵则是单记录操作。另一方面,关系模型把存取路径向用户隐蔽起来,用户只要指出“干什么”或“找什么”,不必详细说明“怎么干”或“怎么找”,从而大大地增强了数据的独立性,提高了用户生产率。3.关系模型的优缺点关系模型具有下列优点:关系模型建立在严格的数学概念基础上。关系模型的概念单一。无论实体还是实体之间的联系都用关系来表示,对数据的检索和更新结果也是关系,所以其数据结构简单、清晰,用户易懂易用。关系模型标准语言SOL简洁易用,推动了关系数据库的广泛应用。关系模型的存取路径对用户隐蔽。它具有更强的数据独立性、更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。关系模型的上述优点使其在诞生之后发展迅速,深受用户的喜爱,当然,关系模型也有缺点,例如,由于存取路径对用户是隐蔽的,其查询效率往往不如层次模型和网状模型。为了提高性能,关系数据库管理系统必须对用户的查询请求进行优化,因此增加了开发关系数据库管理系统的难度。不过用户不必考虑这些系统内部的优化技术细节数据库管理系统的查询优化器会自动选择优化的查询执行计划,为用户提供较高的查询性能。
  • [技术干货] 网状模型介绍
    在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:① 允许一个以上的结点无双亲结点。②一个结点可以有多于一个的双亲结点。网状模型是一种比层次模型更具普遍性的结构。它去掉了层次模型的两个限制,允许多个结点没有双亲结点,且允许结点有多个双亲结点;此外它还允许两个结点之间有多种联系(称之为复合联系)。因此,网状模型可以更直接地描述现实世界,而层次模型实际上是网状模型的一个特例。与层次模型一样,网状模型中每个结点表示一个记录类型(实体型),每个记录类型可包含若干个字段(实体的属性),结点间的连线表示记录类型(实体型)之间一对多的联系。网状模型的优点主要有:① 能够更为直接地描述现实世界,如一个结点可以有多个双亲结点,结点之间可以有多种联系。②具有良好的性能,存取效率较高。网状模型的缺点主要有:①结构比较复杂,而且随着应用环境的扩大数据库的结构变得越来越复杂,不利于最终用户掌握。②数据定义语言和数据操纵语言比较复杂,并且要嵌入某一种高级语言(如COBOL、C)中,用户不容易掌握和使用。③由于记录类型之间的联系是通过存取路径实现的,应用程序在访问数据时必须选择适当的存取路径,因此用户必须了解系统结构的细节,加重了编写应用程序的负担。
总条数:1666 到第
上滑加载中