SQL Server 的连接字符串可以包含 MultiSubnetFailover=true,以处理多个 DNS A 记录,让客户端尝试连接到域(或子域)名称的每个 IP 地址,以访问当前主服务器(Always On 可用性组) .
这是否适用于其他 DBMS,如 MySQL?如果没有,是否有等价物?
SQL Server 的连接字符串可以包含 MultiSubnetFailover=true,以处理多个 DNS A 记录,让客户端尝试连接到域(或子域)名称的每个 IP 地址,以访问当前主服务器(Always On 可用性组) .
这是否适用于其他 DBMS,如 MySQL?如果没有,是否有等价物?
我想学习如何制作一个基于 PostgreSQL 的 DBMS(关系型)。不是为了生产目的而制作商业产品,而是为了学习。
我计划使用 C++,但是要找到关于如何构建自己的(或至少从哪里开始)的信息并不容易。
我知道这个社区中有些人甚至是 PostgreSQL 源代码的贡献者(例如 Laurenz Albe),所以在这里提出这个问题是有意义的。
我一直在学习本课程https://www.youtube.com/playlist?list=PLSE8ODhjZXjbohkNBWQs_otTrBTrjyohi以了解 DBMS 的来龙去脉。但由于大部分只是解释理论,我没有机会看到实际或如何实际去做。
select * from "StudentMaster" where "PhoneNo" = NULL;
语法错误!
我想查看所有没有电话号码的记录!
我已经尝试了这一切。
select * from "StudentMaster" where "PhoneNo" NOT LIKE ('%');
select * from "StudentMaster" where "PhoneNo" NOT IN ('%');
但它显示了所有有电话号码但不为空的记录!为什么
我想知道 Postgres 是否会处理 2038 年出现的 unix 纪元问题?我读过这个并且想知道。
这显然是关于生产力的事情,因为它太远了,但我很好奇。
我正在 MySQL 中创建一个新数据库,在创建 Department 表后,我在添加其他表时收到错误。
CREATE TABLE Department (dept_name varchar(20), building varchar(15), budget numeric(12,2), primary key(dept_name));
CREATE TABLE Course (course_id varchar(7), title varchar(50), dept_name varchar(20),credits numeric(2,0), primary key(course_id),
foreign key(dept_name) references Department);
CREATE TABLE Instructor (ID varchar (5),name varchar (20) not null,dept_name varchar (20),salary numeric (8,2),primary key (ID),
foreign key (dept_name) references Department);
我查看了错误 1239:不正确的外键定义 ,但它似乎没有帮助。
我正在学习DBMS的数据格式,发现我们有一个术语:页面。
页面是从外部存储(例如磁盘,SSD)中获取到主内存中的数据,当查询获取这些页面时,多个页面将首先“缓存”到低级缓存。
这让我想起了操作系统和计算机体系结构中使用的同一个术语页面。来自 Wiki 的关于此“分页”的一些正式描述是:
分页是一种内存管理方案,计算机通过该方案在辅助存储器中存储和检索数据以供在主内存中使用。在此方案中,操作系统从称为页面的相同大小块中的辅助存储中检索数据。分页是现代操作系统中虚拟内存实现的重要组成部分,使用辅助存储让程序超过可用物理内存的大小。
那么就到了第一个问题:
术语页面在 DBMS 和操作系统中是否具有相同的含义?
更进一步:
问题 2是主要原因,我在这里提出问题并开始问自己,为什么 NSM、PAX 页面对于 DBMS 是特殊的。这个问题更笼统,并不关注任何特定的 DBMS。
我正在努力提高我对图形数据库的了解,尤其是 DGraph。图 DBMS 只是新一代的前关系层次/网络模型 DBMS,还是在当前这一代图 DBMS(neo4j 等)的底层有什么新东西?例如,60 年代的 CODASYL 将记录存储在自由格式记录的链表中。这不正是当前图形数据库引擎正在做的事情吗?
我的问题不是关于图形 DBMS 功能的基本方式之外的事情,比如查询语言、复制等。我知道这些领域已经有了显着改善。
我有两个 MySQL 实例,部署在两台不同的远程机器上。
两个 MySQL 实例访问相同的数据目录,该目录存储在一个持久卷上(这个卷由 Gluster 提供,但这并不真正相关,我只是为了完整起见才这么说)。
我知道强烈建议不要使用相同的数据目录运行两个 MySQL 服务器,但这不是不可能的事情,只要采取正确的预防措施。为了做到这一点,我遵循了官方文档(https://dev.mysql.com/doc/refman/5.6/en/multiple-data-directories.html)建议的步骤,更具体地说,在名为“警告”的段落中. 把它们加起来:
所以,我设置了一切,我导入了一个测试数据库,一切都完美无缺。两台服务器都可以从同一个数据目录中读取数据。
现在问题来了。一旦一台服务器执行写入(通过向表中插入一行),另一台服务器就会将表标记为自身已损坏。在研究了一段时间后,我发现了为什么会发生这种情况。基本上每个服务器都有自己的元数据来描述每个表。所以,第一台服务器一旦更新了一张表,它也更新了自己的元数据,但它没有更新第二台服务器的元数据。当第二台服务器检查表时,它注意到表中的当前行数与之前保存在其元数据中的行数不匹配,因此它将表标记为已损坏。经过一番研究,事实证明元数据保存在名为information_schema的默认数据库中. 起初,我想使两个服务器共享相同的information_schema,但无处可寻。正如我后来发现的那样,它保存在程序的内存中,您无法手动更新或访问它。
请记住,我不想设置主从复制。
欢迎所有其他建议,谢谢大家的帮助。
编辑:我最终没有这样做,因为每个人都不鼓励我这样做。谢谢各位的意见!
我有下表:
did 部门标识符,所以我们需要一些在 employee.did 但不在 project.did 中的东西
我想检索所有未通过截止日期的项目,并且它的所有工作人员都属于不负责该项目的部门。
现在,我不知道如何检查 ddate 是否结束(ddate 是截止日期,我不知道它是否通过),以及如何在查询中表示它。
我将展示目前构建的查询:
SELECT Project.pname
from Project
FULL OUTER JOIN Employee
on Project.did <> Employee.did
AND ....
(不知道如何检查 ddate 是否已通过)是否有一个函数可以在 SQL 中显示日期以进行比较(因此差异将为正)或使用给定信息的任何技巧?