MogDB简介
MogDB是EnMotech openGauss DataBase Enterprise Edition的缩写,是云和恩墨基于openGauss开源数据库进行定制、推出的企业发行版。它将围绕高可用、安全、自动化运维、数据库一体机和SQL审核优化等企业需求,解决企业用户落地。其核心价值是易用性、高性能、高可用等和全天候的企业支持。学习MogDB 有几大好处:1. MogDB是基于openGauss开源数据库的企业版本,学习MogDB 等于掌握了openGauss。2. openGauss 又基于PostgreSQL的改良。MogDB提供了PG接口兼容,兼容PSQL客户端,兼容PostgreSQL标准接口。学习MogDB约等于学习PostgreSQL。3. MogDB提供了 Compat-tools 兼容工具。可以提供Oracle数据库兼容性数据字典及视图, 兼容性函数, 管理包兼容。同时也提供了MySQL数据库兼容性数据字典及视图和兼容性函数。还有提供了DB2数据库兼容性函数。MogDB还有提供了很多的兼容特性。使其兼容能力要优于其它数据库。MogDB可以运行大多数的Oracle应用和MySQL应用以及PostgreSQL应用。
下面以初学角度和应用开发者的角度手把手的教你如何快速的构建开发测试环境。
方式一:MogDB实训环境
MogDB实训环境是由墨天轮提供的MogDB数据库线上学习与实训平台,同时提供Oracle/MySQL兼容包,以及Mogila样本数据集。您可以通过浏览器的命令行终端一键连接数据库,方便快速地体验MogDB的各项功能,无需自备环境进行安装。是快速体验测试的最佳途径。
首先打开墨天轮首页,点击工具,再点击数据库在线实训平台,如下图红框所示:


点击进入实训环境:
切换用户并使用gsql命令行工具进入MogDB中:
root@modb:~# su - omm
omm@modb:~$ gsql -d postgres
gsql ((MogDB 5.0.0 build 503a9ef7) compiled at 2023-06-26 16:30:46 commit 0 last mr 1804 )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type “help” for help
我们使用样本数据集Mogila,进行演示:
MogDB提供了一个样本数据集Mogila, Mogila数据集是一个关于DVD出租店信息的数据库,包含有关电影(如标题、类别、女演员)、出租店(如地址、工作人员、客户)和出租的信息。
创建OMM数据库:
MogDB=#create database omm;
CREATE DATABASE
创建mogila数据库:
MogDB=#create database mogila DBCOMPATIBILITY='PG';
CREATE DATABASE
MogDB=#\q
omm@modb:~$
omm@modb:~$ cd mogila-v1.0.0/
omm@modb:~/mogila-v1.0.0$ ls
LICENSE.txt README.md mogila-data.sql mogila-insert-data.sql mogila-schema.sql
omm@modb:~/mogila-v1.0.0$
创建mogila shema;
omm@modb:~/mogila-v1.0.0$ gsql -d mogila -f mogila-schema.sql
……
ALTER TABLE
ALTER TABLE
total time: 722 ms
插入所有数据:
omm@modb:~/mogila-v1.0.0$ gsql -d mogila -f mogila-data.sql
…………
total time: 4105 ms
创建所有模式对象(表等)并插入所有数据:
#使用mogila数据库:
omm@modb:~/mogila-v1.0.0$ gsql -d mogila
#查看有哪些表:
MogDB=#\dt List of relations
Schema | Name | Type | Owner | Storage
--------±--------------±------±------±---------------------------------
public | actor | table | mogdb | {orientation=row,compression=no}
………
public | store | table | mogdb | {orientation=row,compression=no}
(15 rows)
现在可以使用MogDB实训环境右边的提示进行mogila相关的查询了:
#例如:按长度排序列出前十电影
MogDB=#select
film_id,
title,
length
from
film
order by
length desc limit 10;
####### film_id | title | length
---------±-------------------±-------
解释 690 | POND SEATTLE | 185
872 | SWEET BROTHERHOOD | 185
349 | GANGS PRIDE | 185
609 | MUSCLE BRIGHT | 185
426 | HOME PITY | 185
817 | SOLDIERS EVOLUTION | 185
141 | CHICAGO NORTH | 185
182 | CONTROL ANTHEM | 185
212 | DARN FORRESTER | 185
991 | WORST BANGER | 185
(10 rows)
MogDB实训环境其本质是基于docker,因为安全等因素影响,不能对外连接。所以只能在浏览器中使用。对于一般的体验用户是不存在问题,而且于对墨天轮的注册用户来说,退出MogDB实训环境,数据依然会保留的。如果是想从事MogDB 开发工作或者更深入的测试,就需要使用方式二了。
方式二 使用Docker方式:
Docker容器技术目前应用已经非常普遍,下面以windows 为例简单的讲解一下Docker的安装,Docker与您使用操作系统没有关系,只要安装Docker都可以运行Docker MogDB 镜像文件。通过以下网址下载Docker并完成安装,
https://www.docker.com/products/docker-desktop
Docker环境准备
由于笔者的windows安装有VMvare WorkStation 其它测试环境,所以这里选择WSL2 代替Hyper-V. Hyper-V 可能会导致VMvare WorkStation 虚拟机端口被占用导致虚拟机无法使用的问题。

创建目录:
笔者这里使用的是D盘的docker 目录并设置docker资源镜像定位:

应用并重启Docker desktop
创建一个volume 命名为mogdb

查看创建的volume:

安装并运行MogDB 的docker镜像
运行下以下命令运行MogDB 的docker:
docker run --name mogdb --privileged=true -d -e GS_PASSWORD=Enmo@123 -v d:\docker\mxogdb:/var/lib/mogdb -p 15432:5432 swr.cn-north-4.myhuaweicloud.com/mogdb/mogdb:5.0.0

使用Docker中的MogDB
MogDB 映像已经被下载并且已经运行起来。
运行容器内部的bash
docker exec -it mogdb bash

MogDB的映像文件是基于ubuntu 20.4 创建的
首先运行
apt-get update
再运行
apt install git
安装git
把之前compat-tools 删除掉 重新clone 最新版的compat-tools
解释omm@e76e8bf07e75:~$ git clone https://gitee.com/enmotech/compat-tools.git
Cloning into 'compat-tools'...
……
Resolving deltas: 100% (925/925), done.
gsql -d postgres
创建omm数据库
create database omm;
在这里有一个知识点,compat_tools 默认使用的是omm 数据库。 也就是说如果一个数据库没有运行compat tools 的工具,就无法使用compat-tools.
安装compat tools
解释gsql -f runMe.sql
omm@e76e8bf07e75:~/compat-tools$ gsql -r
gsql ((MogDB 5.0.0 build 503a9ef7) compiled at 2023-06-26 16:30:48 commit 0 last mr 1804 )
MogDB=#select * from v$version;
banner
-------------------------------------------------
MogDB 5.0.0 build 503a9ef7
compiled at 2023-06-26 16:30:48
Platform architecture: x86_64-unknown-linux-gnu
(3 rows)
#创建用户
MogDB=#create user youdi identified by 'youdi@mogdb123';
CREATE ROLE
#授权
MogDB=#grant all privileges to youdi;
ALTER ROLE
#创建表空间
MogDB=# CREATE TABLESPACE youdi OWNER youdi relative location 'tablespace/youdi';
CREATE TABLESPACE
#创建数据库
MogDB=#create database youdi with tablespace youdi;
CREATE DATABASE
#创建schema
MogDB=>create schema youdi;
CREATE SCHEMA
#这里需要再一次跑一下compat tools 安装脚本给youdi库使用。
omm@e76e8bf07e75:~/compat-tools$ gsql -U youdi -d youdi -f runMe.sql
Password for user youdi:
omm@e76e8bf07e75:~/compat-tools$ gsql -U youdi -d youdi
Password for user youdi:
gsql ((MogDB 5.0.0 build 503a9ef7) compiled at 2023-06-26 16:30:48 commit 0 last mr 1804 )
#验证
MogDB=>select * from v$version; banner
MogDB 5.0.0 build 503a9ef7
compiled at 2023-06-26 16:30:48
Platform architecture: x86_64-unknown-linux-gnu
(3 rows)
MogDB=>select * from v$tablespace;
ts# | tablespace_name
-------±----------------
1663 | PG_DEFAULT
1664 | PG_GLOBAL
18129 | YOUDI
(3 rows)
#Oracle 的v$动态视图现在可以用了。
MogDB=>select sysdate from dual; sysdate
2024-04-29 13:56:54
(1 row)
#Oracle 的dual也可以用了




