2023-09-28 monetdb-databae的概念和作用-分析

摘要:

每个数据库对于db,schema以及user,role都有一套自己的设计, 不同数据库间对于相同名字的东西例如database和schema可以说南辕北辙, 例如mysql中schema其实是database的同义词.

本文分析monetdb的database的概念和作用

database的概念和作用:

  1. 和mysql的database完全不同, mysql的database和schema是同义词, 但是mdb的database完全不同
  2. mdb的database可以当作实例来理解, 一个db包含mserver运行的一切, 以下逐个解释
  3. mdb的db在物理文件上, 包含最顶层的目录结构, mserver是以db为单元启动
  4. 用户每指定一个不同的db做连接, 就启动一个新的mserver进程
  5. db与db之间, 从物理文件目录结构上就彻底隔离, 除了预定义的对象, 两个db之间没有任何相同的地方
  6. 无论用户定义的schema,user,role,UDF等等, 两个不同的db, 都是互相不能使用也不能访问
  7. 换个简单的说法, user是db的一部分, 一个db可以创建多个user, 但是一个user却只能位于一个db
    1. 这里有个漏洞, 如果两个不同的db里创建两个相同名字的user, 能说这个user是同一个?
    2. 显然不能, 因为这两个名字一样的user, 无论是password, 还是赋予的role, 还是创建的schema, 以及默认的schema, 都是独立的, 位于不同的db中
    3. 所以很明显, 就算是在两个不同的db中创建两个名字一样的user, 这两个user也是完全不同的, 仅仅只是user名字一样. 但是这两个user却位于两个不独立的db实例中!
  8. 那么该如何理解mdb中的database与mysql中的database的区别呢?
    1. mysql的database是schema的同义词
    2. 也就是说mysql的database对应的是mdb中的schema
    3. 而mdb的schema是mdb的database的一部分
    4. 那么mdb的database的作用就是mysql的整个实例
    5. 从运行的角度, mdb的一个实例是一个mserver进程, mysql的一个实例是一个mysqld进程.
    6. 一个mserver进程管理一个mdb的db, 也只能管理一个db. 而这个db包含运行时所有对象, 且与其他的mdb的db互相独立
    7. 一个mysqld进程管理所有的mysql对象, 即包含运行时的一切对象, 等价于mdb的一个mserver

mclient打开两个mdb的database分析:
 

节点架构图:

节点图说明:

  1. mserver对应的可以理解成mysqld
  2. 客户端每连接一个不同的database,就会启动一个新的mserver进程
  3. 如果两个客户端连接同一个database,那么就不会启动新的mserer进程

两个客户端分别连接两个不同的database的例子分析:

一. 创建两个database

# mytest
monetdb create mytest
monetdb release mytest# mycrack
monetdb create mycrack
monetdb release mycrack

二. 分别查看两个database下的目录结构

[root@dev-stonedb-zhangshilong1 mytest]# pwd
/dbfarm/mytest
[root@dev-stonedb-zhangshilong1 mytest]# ll
total 4
-rw------- 1 root root    0 Sep 28 02:46 6a292eb5-8a55-4861-af04-1e48573199f2
drwx------ 9 root root 4096 Sep 28 02:46 bat
-rw------- 1 root root    0 Sep 22 06:27 mdbtrace.log
drwx------ 3 root root   17 Sep 22 06:27 sql_logs

[root@dev-stonedb-zhangshilong1 mycrack]# pwd
/dbfarm/mycrack
[root@dev-stonedb-zhangshilong1 mycrack]# ll
total 0
-rw------- 1 root root  0 Sep 28 02:45 b2bc7dd0-a500-496e-9fee-d58cacbd7ddd
drwx------ 4 root root 30 Sep 28 02:45 bat
-rw------- 1 root root  0 Sep 28 02:45 mdbtrace.log
drwx------ 3 root root 17 Sep 28 02:45 sql_logs

分析:

  1. 可以看出都是作为顶层目录结构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/146545.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux开发工具之文本编译器vim

目录 Linux编辑器-vim使用 1. vim的基本概念 ● 正常/普通/命令模式(Normal mode) ● 插入模式(Insert mode) ● 末行模式(last line mode) 2. vim的基本操作 ● [正常模式]切换至[插入模式] ● [插入模式]切换至[正常模式] ● [正常模式]切换至[末行模式] ● 退出vi…

步力宝科技爆款产品定位,开创智能物联网新商业

数据显示,中国处于 “亚健康”状态人口数量约占总人口的70%,亚健康是一种临界状态,指介于健康和疾病之间的状态。亚健康是一个动态演变的过程,既有向慢病发展的趋势,也能通过合理的干预使人体重返健康状态,…

网络运营和电子商务有什么区别

大家好,我是网络工程师成长日记实验室的郑老师,您现在正在查看的是网络工程师成长日记专栏,记录网络工程师日常生活的点点滴滴 一个同学他问我,他说学网络运营的话,它是不是电子商务里面的这个东西?像电子大…

南京大学【软件分析】08 Pointer Analysis

文章目录 1. Motivation2. Introduction to Pointer Analysis3. Key Factors of Pointer Analysis3.1 Heap Abstraction3.2 Context Sensitivity3.3 Flow sensitivity3.4 Analysis scope 4. Concerned Statements 1. Motivation 指针分析存在不精确的问题。对于下面的例子&…

快排三种递归及其优化,非递归和三路划分

个人主页:Lei宝啊 愿所有美好如期而遇 目录 快排简介: 快排的三种递归实现: Hoare: 挖坑: 双指针: 小区间优化: 三数取中优化: 快排非递归实现: 快排的三路划…

Ubuntu配置深度学习环境(TensorFlow和pyTorch)

文章目录 一、CUDA安装1.1 安装显卡驱动1.2 CUDA安装1.3 安装cuDNN 二、Anaconda安装三、安装TensorFlow和pyTorch3.1 安装pyTorch3.2 安装TensorFlow2 四、安装pyCharm4.1 pyCharm的安装4.2 关联anaconda的Python解释器 五、VScode配置anaconda的Python虚拟环境 前言&#xff…

一维数组和二维数组的使用(char类型)

目录 导读1. 字符数组1.1 字符数组的创建1.2 字符数组的初始化1.3 不同初始化在内存中的不同1.3.1 strlen测试1.3.2 sizeof测试1.3.3 差异原因 1.4 字符数组的使用 2. 数组越界3. 数组作为函数参数博主有话说 导读 我们在前面讲到了 int 类型的数组的创建和使用: 一…

焕新古文化传承之路,AI为古彝文识别赋能

目录 1 古彝文与古典保护 2 古文识别的挑战 2.1 西文与汉文OCR 2.2 古彝文识别难点 3 合合信息:古彝文保护新思路 3.1 图像矫正 3.2 图像增强 3.3 语义理解 3.4 工程技巧 4 总结 1 古彝文与古典保护 彝文指的是云南、贵州、四川等地的彝族人使用的文字&am…

行为型设计模式——责任链模式

摘要 责任链模式(Chain of responsibility pattern): 通过责任链模式, 你可以为某个请求创建一个对象链. 每个对象依序检查此请求并对其进行处理或者将它传给链中的下一个对象。 一、责任链模式意图 职责链模式(Chain Of Responsibility) 是一种行为设…

MAC手动修复『已损坏』问题 终端运行命令报错处理

安装一些第三方软件会出现已损坏的报错提醒,需要用命令sudo xattr -rd com.apple.quarantine进行修复,但是终端提示命令错误,怎么版 错误有几种: No module named ‘pkg_resources’ 这是mac电脑上python2,python3并…

mfc140u.dll是什么文件?mfc140u放在哪个文件夹?详细修复教程

今天我想和大家分享一个非常常见的问题——mfc140u.dll丢失的困扰以及解决方法。 首先,让我们来了解一下什么是mfc140u.dll。这是一个非常重要的动态链接库文件,它是Microsoft Foundation Class Library的一个组件。许多软件和游戏都需要这个文件的支持才…

Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!

关于Appium V2 Appium V2 beta版本在2021年发布,从2022年1月1号开始,Appium核心团队不会再维护Appium 1.x版本了,所有近期官方发布的平台驱动(如Android平台的UIAutomator,IOS平台的XCUITest)不再兼容Appi…

Qt多线程实现方式-moveToThread及其注意事项

Qt多线程实现方式-moveToThread及其注意事项 Chapter1 Qt多线程实现方式-moveToThread一、Qt下使用线程主要有两种方法。二、Qt下创建多线程也有两种方法。三、其它问题。 Chapter2 QT多线程接收串口数据1.前言2.功能作用3.软件测试效果4.基本步骤 Chapter3 利用Qt多线程机制实…

面试打底稿⑦ 项目一的第三部分

简历原文 抽查部分 完成路线规划模块选择路线功能,用neo4j这种存储图关系的非关系数据库,实现最短线路规划、最低成本线路规划 设计优化物流信息模块,合理选择数据库、缓存技术,实现数据精简、流量削峰、提高系统可 用性 模拟问答…

Scala第十五章节

Scala第十五章节 1. 递归 2. 案例一: 求阶乘 3. 案例二: 斐波那契数列 4. 案例三: 打印目录文件 scala总目录 文档资料下载

04、EL和JSTL核心技术

目录 1 EL表达式(熟悉) 1.1 基本概念 1.2 主要功能 1.3 访问内置对象的数据 1.3.1访问方式 1.3.2 执行流程 1.4 访问请求参数的数据 1.5 访问Bean对象的属性 1.5.1 访问方式 1.5.2 主要区别 1.6 访问集合中的数据 1.7 常用的内置对象 …

uboot启动流程-涉及lowlevel_init汇编函数

一. uboot启动流程涉及函数 之前文章简单分析了 uboot启动流程的开始,从链接脚本文件 u-boot.lds 中,我们已经知道了入口点是 arch/arm/lib/vectors.S 文件中的 _start函数。 _start函数:调用了 reset 函数,reset 函数内部&…

1、Kafka 安装与简单使用

第 1 章 Kafka 概述 1.1 定义 Kafka传统定义: Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 Kafka最新定义 : Kafka是 一个开源的 分 布式事件流平台 &#xff08…

《CTFshow-Web入门》10. Web 91~110

Web 入门 索引web91题解总结 web92题解总结 web93题解 web94题解 web95题解 web96题解 web97题解 web98题解 web99题解总结 web100题解 web101题解 web102题解 web103题解 web104题解 web105题解总结 web106题解 web107题解 web108题解 web109题解 web110题解 ctf - web入门 索…

Scala第十四章节

Scala第十四章节 1. 隐式转换和隐式参数介绍 2. 隐式转换 3. 隐式参数 4. 案例: 获取列表元素平均值 scala总目录 文档资料下载