禅与计算机 2019-01-15 17:37 采纳率: 80%
浏览 396
已采纳

数据库管理系统的存储引擎要在一个多高的层面上操作呢?

具体点说就是数据库管理系统的存储引擎是否会涉及到磁盘上的一些操作,比如将要一起访问的数据块放在同一柱面上,或将数据分隔存储在几个相对较小的磁盘上而不是放在一个大磁盘上等等这些较低层的操作,如果DBMS涉及到这些操作,请问是如何实现的呢

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-01-16 00:15
    关注

    这些都是文件系统考虑的问题,而不是dbms,实际上,在固态硬盘的时代,数据的物理存储连操作系统都不管了,具体存在固态芯片的什么位置,是固态硬盘的主控芯片决定的。固态硬盘的扇区地址和物理芯片单元的位置是无关的。

    为什么这些底层的操作要交给底层而不是高层软件去处理呢,道理很简单,首先,不同的存储设备差异很大,越高层的设计,越难以得到一个在多数硬件,甚至未来硬件上都高性能的方案,甚至,连兼容性都很困难。
    我举一个例子,一个硬盘如果有一个地方出现了一个坏道,怎么办?文件系统层面,可以把这个位置标记为坏簇(相当于用一个文件占住这个位置,只是这个文件我们不会读取它的内容)

    你要是在数据库层面设计,你怎么处理这个硬盘?
    另外,不同的操作系统,用的文件系统都不同,windows下是ntfs,linux下是ext4,你的数据库怎么才能兼容不同的文件系统,就算你支持了,那么你编写好的数据库还能支持未来新的文件系统么?

    你知道数据库软件的一个使用场景是服务器,而随着云计算的兴起,虚拟机占服务器的比重现在有多高么?你一个数据库,要绕过操作系统直接写物理磁盘,那么还能在虚拟机环境里运行么?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?