我有点像零管理 OODBMS 的管理员,但我主要从事编程工作。
我记得几年前读过一些 SQL 数据库,它有一个类似永久事务的概念。它可能是 Sybase。不管怎样,那个“东西”是什么,就像你开始的一个事务,它在连接之间持续存在,你可以用它来运行“正常”的事务。它基本上为您提供了该数据库的“视图”,该数据库可能与主数据库不同,但在同一台服务器上运行,因此共享大部分资源,而不必拥有它的“自己的”服务器。我希望你现在明白我的意思了。
无论如何,那种东西叫什么,它在现代数据库中是否仍然可用。特别是,是否有任何奇特的分布式 NoSQL 数据库可以做到这一点?
我问的原因是因为我可以使用类似的东西在主数据库上运行我的软件的下一个版本的暂存,这样我就不需要拥有一个与主系统一样强大的暂存系统,而且同步从主要到测试的更改的麻烦/带宽。我会开始“永久事务”,测试新软件几天,可能会让一些用户预览,完成后丢弃更改。然后我进行真正的部署,并为下一个版本启动一个新的“永久事务”......
注意:我无法放置有意义的标签,因为这是我的第一篇文章,我没有发明标签的权利,而且没有像“持久”、“永久”甚至“长期运行”这样的东西......
我明白您的意思,我们使用NetApp FlexClones在存储上执行此操作。FlexClone“看起来”就像一个文件系统的副本,但磁盘上的底层块是写时复制的,因此它实际占用的唯一空间是您所做的更改的空间。
然而,克隆并不是像重做日志那样的变化流。NetApp 的工作方式是,您在文件系统级别看到的每个块实际上只是指向“真实”存储上的块的指针。创建 FlexClone 只是复制指针列表的问题,因此它是一个非常轻量级的操作。当您更改 FlexClone 上的块时,指针将移动到新块,并复制原始块,然后照常进行。这有两个有趣的含义:
我们通常会将主数据库置于热备份模式(对于 Oracle,但由于它在存储上,这将适用于具有等效模式的任何数据库),FlexClone 存储,使用 NFS 将克隆安装到(小得多的)测试服务器上,然后创建一个新的控制文件,根据需要从存档的重做日志中恢复数据库并使用
resetlogs
. 默认情况下,我们允许 10% 的“快照保留”(即您最多可以更改克隆的 10%),但这是完全可配置的——您可以将其设置为 100% 并进行“拆分”,这也会创建一个独立的副本。这项技术(使用一些巧妙的 shell 脚本)已将我网站上创建测试环境的时间从 3 天以上缩短到几分钟,我是它的超级粉丝。我认为您正在寻找断开连接的数据集。它确实使事务管理复杂化,因为您无法维护数据库锁。
JDBC 驱动程序允许数据集与数据库断开连接。