收藏
0有用+1
0

数据存取路径

计算机术语
数据存取是指数据库数据存贮组织和存贮路径的实现和维护。在计算机中,数据一般以文件形式保存或存放在数据库中。在数据库,数据存取路径分为主存取路径与辅存取路径,前者主要用于主键检索,后者用于辅助键检索。在系统中,路径一般分为相对路径和绝对路径。
中文名
数据存取路径
外文名
Data access path
学    科
计算机
定    义
存取数据的位置
有关术语
主存取路径、辅存取路径
领    域
数据库系统

简介

播报
编辑
数据宙趋讲凝存取路径是指存取数据的骗微拔位置阿战习,由于程序运行具有局部性,不可能把所有数据都调入内存,在内存中只有一部分厦台数据,其余数据都在外存,背兆因此数据存取路径分为辅存存取路径和内存存取路径,不档棕乃同的路径,查找的方法是不同的,一般舟体笑档采再分为内存查找和辅存查找。

路径名

播报
编辑
在树形目录结构中,从根目录到任何数据文件,都只有一条惟一的通路。在该路径上从树的根(即主目录)开始,把全部目录文件名与数据文件名依次地用“/”连接起来,即构成该数据文件的路径名(path name)。系统中的每一个文件都有惟一的路径名。

相对路径

当一个文件系统含有许多级时,每访问一个文件,都要使用从树根开始直到树叶(数据文件)为止的、包括各中间节点(目录)名的全路径名。这是相当麻烦的事,同时由于一个进程运行时所访问的文件大多仅局限于某个范围,因而非常不便。基于这一点,可为每个进程设置一个“当前目录” ,又称为“工作目录” 。进程对各文件的访问都相对于“当前目录”。而进行。此时各文件所使用的路径名,只需从当前目录开始,逐级经过中间的目录文件,最后到达要访问的数据文件。把这一路径上的全部目录文件名与数据文件名用“/”连接形成路径名。如用户 B 的当前目录是 F,则此时文件 J 的相对路径名仅是 J 本身。这样,把从当前目录开始直到数据文件为止所构成的路径名,称为相对路径名(relative path name)。 [1]

绝对路径

绝对路径是指目录下的绝对位置,直接到达目标位置,通常是从盘符开始的路径。
完整的描述文件位置的路径就是绝对路径,以web站点根目录为参考基础的目录路径。绝对路径名的指定是从树型目录结构顶部的根目录开始到某个目录或文件的路径,由一系列连续的目录组成,中间用斜线分隔,直到要指定的目录或文件,路径中的最后一个名称即为要指向的目录或文件。之所以称为绝对,意指当所有网页引用同一个文件时,所使用的路径都是一样的。 [2]

内存查找方法

播报
编辑

顺序查找

顺序查找(sequential scarch)又称线性查找,是‘种最简单的查找方法。它是指将数据以线性表的形式存储,用线性表来表示静态查找表。其基本思想是:从线性表中第一个记录开始,依次比较每个数据元素的关键字,若记录的关键字与给定值相等,则查找成功返回该元素序号;若查完整个线性表都没有与给定值匹配的元素,则查找失败。
复杂度分析:
查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+n) = (n+1)/2 ;
当查找不成功时,需要n+1次比较,时间复杂度为O(n);
所以,顺序查找的时间复杂度为O(n)。

折半查找

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
复杂度分析:最坏情况下,关键词比较次数为log2(n+1),且期望时间复杂度为O(log2n);

斐波那契查找

基本思想:也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。同样地,斐波那契查找也属于一种有序查找算法。
相对于折半查找,一般将待比较的key值与第mid=(low+high)/2位置的元素比较,比较结果分三种情况:
1)相等,mid位置的元素即为所求
2)>,low=mid+1;
3)<,high=mid-1。
斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,及n=F(k)-1;
开始将k值与第F(k-1)位置的记录进行比较(及mid=low+F(k-1)-1),比较结果也分为三种
1)相等,mid位置的元素即为所求
2)>,low=mid+1,k-=2;
说明:low=mid+1说明待查找的元素在[mid+1,high]范围内,k-=2 说明范围[mid+1,high]内的元素个数为n-(F(k-1))=Fk-1-F(k-1)=Fk-F(k-1)-1=F(k-2)-1个,所以可以递归的应用斐波那契查找。
3)<,high=mid-1,k-=1。
说明:low=mid+1说明待查找的元素在[low,mid-1]范围内,k-=1 说明范围[low,mid-1]内的元素个数为F(k-1)-1个,所以可以递归 的应用斐波那契查找。
复杂度分析:最坏情况下,时间复杂度为O(log2n),且其期望复杂度也为O(log2n)。

二叉树查找算法

基本思想:二叉查找树是先对待查找的数据进行生成树,确保树的左分支的值小于右分支的值,然后在就行和每个节点的父节点比较大小,查找最适合的范围。这个算法的查找效率很高,但是如果使用这种查找方法要首先创建树。
二叉查找树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树Binary Sort Tree)或者是一棵空树,或者是具有下列性质的二叉树:
1)若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
2)若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
3)任意节点的左、右子树也分别为二叉查找树。

辅存查找方法

播报
编辑
  • B树和B+树(B Tree/B+Tree)
平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。
数据结构对B树的定义为“在计算机科学中,B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(log n)的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同,B树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。普遍运用在数据库和文件系统。
B树定义:
B树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点。
·根节点至少有两个子节点
·每个节点有M-1个key,并且以升序排列
·位于M-1和M key的子节点的值位于M-1 和M key对应的Value之间
·其它节点至少有M/2个子节点
B+树定义:
B+树是对B树的一种变形树,它与B树的差异在于:
  • 有k个子结点的结点必然有k个关键码;
  • 非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
  • 树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。
  • 分块查找
分块查找又称索引顺序查找,它是顺序查找的一种改进方法。
算法思想:将n个数据元素"按块有序"划分为m块(m ≤ n)。每一块中的结点不必有序,但块与块之间必须"按块有序";即第1块中任一元素的关键字都必须小于第2块中任一元素的关键字;而第2块中任一元素又都必须小于第3块中的任一元素,……
算法流程:
step1 先选取各块中的最大关键字构成一个索引表;
step2 查找分两个部分:先对索引表进行二分查找或顺序查找,以确定待查记录在哪一块中;然后,在已确定的块中用顺序法进行查找。
  • 散列查找
哈希函数的规则是:通过某种转换关系,使关键字适度的分散到指定大小的的顺序结构中,越分散,则以后查找的时间复杂度越小,空间复杂度越高。
算法流程:
1)用给定的哈希函数构造哈希表;
2)根据选择的冲突处理方法解决地址冲突;
常见的解决冲突的方法:拉链法和线性探测法。
3)在哈希表的基础上执行哈希查找。
哈希表是一个在时间和空间上做出权衡的经典例子。如果没有内存限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为O(1);如果没有时间限制,那么我们可以使用无序数组并进行顺序查找,这样只需要很少的内存。哈希表使用了适度的时间和空间来在这两个极端之间找到了平衡。只需要调整哈希函数算法即可在时间和空间上做出取舍。 [3]
在外部查找中,查找的数据规模一般很大,为了提高查找效率与速度,一般采用散列查找,分块查找,B/B+树查找。