孤惯|微软 Bing 搜索核心技术 BitFunnel 原理揭秘( 四 )
假设我们还是一共有十六篇文档和十六位的表示 , 那么矩阵表示为16*16 , 同时我们反转得到了十六位*十六篇 , 我们可以知道 , 短文章的文档里面为1的个数还是相当少的 , 属于稀疏矩阵 , 会浪费相当大的空间存储 , 而长篇的文章里面1的个数相当高 , 其对应的错误率也很高 。 在BitFunnel中,集群间按不同文章的长度进行切割分享 , 下面例子切割成了三部分 , 实际上会按其他十到十五种不同组 。
当按长度分好组后 , 我们就可以对稀疏部分进行压缩存储 , 密集的文章进行扩充位数存储 , 降低错误率 。
那么随之我们跟之前一样就可以 , 当我们的查询文档Query对应只有三位为1时 , 我们分别对这三组的对应行求与运算即可得出结果:
这样的计算方式实际上在90年代的时候就提出来了 , 但是一直不被认可 。 为什么?当时普遍都还是在单个计算机上进行各种算法操作 , 那么在一台机器上又将数据如上图一样切割成三部分分别进行处理很明显代价得不偿失 。 原本只需要进行一遍操作的流程被复杂化了 , 而且事实上也不仅仅分割成三部分 , 往往是十几类 。 而随着时代的发展 , 我们现在拥有了分布式的集群 , 我们可以将不同的机器处理不同文章长度种类的文档:
其次还有不同的是内存技术的发展 , 以前我们用每GB的花费金钱来衡量其中的成本是错误的方式:
传统衡量方式上 , 硬盘获得存储1GB的空间只需要0.05美元 , 而DDR4需要7.44美元 , 导致了大量企业认为能够增加存储就不断往硬盘上堆积 , 但这种方式很明显是错误的 。
假设公司有存储数据总量为D , 然后服务上需要查询的文档总量设置为Q , 如果我们使用快速的机器 , Q个查询很快就完成了(Q量可以通过广播的方式放进内存去各个数据分块中快速查询然后累计返回):
如果我们用存储大但是处理速度慢的机器 , 我们仍需要遍历所有的数据才能获得想要的数据总量:
如果我们采用BitFunnel的方式来处理 , 那么 , 查询量Q可以用(带宽/总量)表示 , 引入这样的概念就可以将之前硬盘和DDR4换一种计算方式 , 用每秒查询带宽量以及每美金每秒查询带宽量来表示之间能力差别 , 结果如下:
我们需要179倍的硬盘才能比得上DDR4 , 价格是DDR4的76倍代价 。
- 忘川彼岸|启迪设计中标微软(中国)苏州科技园区二期办公楼项目设计总包
- 孤惯|性价比最高的电脑音箱有哪些?20款50-500元电脑音箱推荐
- 游戏机|最佳游戏平台评选!任天堂、索尼和微软全都败给了PC电脑
- 微软|硬盘满了别发愁,Windows 10小工具帮你轻松释放存储空间
- 那年初夏|一更新就出事的win10!SSD硬盘被坑寿命受损,微软已正视
- 西红柿小生|到底值不值?微软轻薄超极本放到现在,还有吸引力吗?
- |5分钟读懂微软新技术:未来游戏如何消灭读条
- 孤惯|通用人工智能啥时候能实现?这是我的最新预测
- 吾本轻狂|微软最强版DX12杀到:AMD开始爆发比拼NV
- 萱草|微软发布Win 10英特尔微代码/兼容性更新