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

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

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

  • 写回答

1条回答

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

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

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

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

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

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

报告相同问题?

悬赏问题

  • ¥15 一道python难题
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度