百度面试题——存储和维护URL问题
来源:互联网 发布:王欣 知乎 编辑:程序博客网 时间:2024/06/10 00:10
问题描述:
URL是Uniform Resorce Location的缩写,即统一资源定位符,也就是我们常说的网址,为了便于理解,我们将URL简化成如下形式,以www.baidu.com/s?wd=baidu为例,www.baidu.com称为site, 后面部分称为path,每个URL都有一些属性,例如定长的属性和不定长的属性。
请设计一个系统,要求:
1)存储和维护100亿的URL及其属性
2)实现URL及其属性添加,更新和删除
3)给定一批URL,判断是否在系统中,如果在系统中,需要得到它的信息
4)快速选择出一个站点的所有URL及其属性信息
提示:总体URL数据量巨大,所以有必要把URL得存储及其相关的计算分布在多台机器上完成
解题思路:
该题考察大数据存储以及数据库方面的知识,同时也考察分布式系统(数据库)的知识。
首先,已知URL包含如下信息:site、 path、定长属性和不定长属性,可设计一张表,分别包含如下字段:
site字段:存放URL的site。
path字段:存放URL的path。
定长属性:分配定长(例如char[10])的数据宽度的属性字段。
不定长属性:分配不定长(例如varchar[255])的数据宽度的属性字段。
同时,将字段site建立索引,用以实现快速查找。
考虑到有多台机器来存储URL,因此在各台机器上采用相同数据库来建立同一表项,每台机器存储一部分URL。
1)当探测到URL时,根据哈希来决定当前URL存储的机器编号,其哈希函数可设计为同一段域名相同的URL存放在同一台机器,这样可保证同一site的URL存放在同一节点,方便查询和修改。
2)由于同一site的URL存放在同一台机器上,因此,当一个新URL进入时,首先可通过数据库查询其是否已存在,若不存在则插入。对URL属性的修改也可采用数据库操纵语句来实现。
3)可采用查询语句来实现,对于给定的每一个URL,根据其哈希值到对应节点的数据库中去进行搜索,搜索过程以site和path为条件(其构成URL),直接返回查询结果即可。
4)由于在设计数据库的时候在site上建立了索引,且通过哈希来保证同一site的所有记录都在该机器节点上,因此,只需根据给定的站点来定位其所在的机器节点,然后以site为查询条件,返回所有查询结果即可。
- 百度面试题——存储和维护URL问题
- 百度面试题——捣乱分子对问题
- 百度面试题——天平称重问题
- 百度面试题——首尾相连的珠子问题
- 百度面试题——组件依赖性问题
- 百度面试题——最大连续数字串问题
- 股票买进卖出问题—百度实习招聘面试题
- 面试题——存储过程和函数的区别
- 百度面试题:用链表交叉判断迭代打开url问题
- 随机数——百度面试题
- 百度面试题——01排序
- 面试题—过河问题
- [百度面试题]100层楼丢玻璃球问题
- [百度面试题]100层楼丢玻璃球问题
- 百度面试题——malloc/free和new/delete的异同
- 腾讯百度一次面试题和经历
- 数据结构面试题1.2.6-Top K算法详细解析——百度面试题
- 百度面试题——蚂蚁爬杆答案
- 史上最糟糕的两个变量名
- JDK 安装
- UVaOJ 401 - Palindromes
- 11gR2 bbed在linux运行 需要10g上的几个文件
- 利用keepalived构建双主MySQL
- 百度面试题——存储和维护URL问题
- 面试训练找最小k个数
- 乙肝五项怎么区分大三阳和小三阳
- 64位操作系统 Java Odbc Access数据库连接
- PowerDesigner使用教程 —— 概念数据模型
- oracle 物理读,逻辑读的理解
- 黑马程序员_复用类
- 不用任何全局及局部变量实现strlen
- 20120910教师节有感