[Leveldb] 实现文档翻译
文件 leveldb是根据单机版BigTable来实现的,但是文件的组织方式却有以下几点不同。 每一个数据库是由存储在文件夹下面的一系列文件集合来实现的,有很多不同类型的文件: Log Files: log文件(*.log) 存储了一系列最近的更新。每一个更新都会追加到当前的lo
文件
leveldb是根据单机版BigTable来实现的,但是文件的组织方式却有以下几点不同。
每一个数据库是由存储在文件夹下面的一系列文件集合来实现的,有很多不同类型的文件:
log文件(*.log) 存储了一系列最近的更新。每一个更新都会追加到当前的log文件中。当一个log文件到达一个预设阈值(默认是4MB),它将会转变成一个有序表,并且为以后的更新操作生成一个新的log文件。
一个 sorted tables (*.sst) 存储一系列有序的key。每一个entry是一个key的value或者一个删除的key。
sorted tables 由多级的方式组成。sorted table 由一个特殊的更新的层级生成(也叫做level-0)。当更新的文件超过某一阈值(通常是4个),所有更新的文件会一起与level-1层的文件进行合并产生一个新的leve-1文件(我们为每2M的数据建立一个level-1层的文件)
更新层的文件可能会包含重复的key,然而在其他层级的文件有着有序不相同的key。加入第L层,L>=1。当在L层文件的大小超过10^L MB 时,一个在L层的文件以及所有在L+1层的文件会形成一个新的文件集合。这些合并操作会逐渐的从level-0到最后一层。
一个MANIFEST文件列出了所有sorted tables的集合,key的序列,一起他重要的元数据。一个新的MANIFEST文件,会在一个数据库重新打开时生成。这个MANIFEST文件以一个log文件的格式,服务的一些更新信息会追加到这个log文件中。
CURRENT是一个简单的文本文件包含最新的一个MANIFEST文件的名字
数据信息会打印在LOG和LOG.old文件中
其他文件用来生成其他的用处,比如LOCK,*.dbtmp等等
Level 0当一个log文件增长到超过阈值时(默认为1MB):
建立一个新的内存表和log文件用于写入以后的更新
在后台:
将之前内存表中的内存写到一个sstable中
丢掉这个内存表
删除旧的log文件和旧的内存表
向level-0层中增加新的sstable
当L层的大小超过它的界限,我们在后台的进程中对它进行压缩。压缩操作从L层和所有L+1层之间选择一个文件。注意如果一个L层的文件只与一个L+1层的文件重叠,,全部的L+1层的文件被用来做压缩的输出文件并且压缩后将会被删除。一方面:因为level-0的特殊性,我们特殊对待从level-0到level-1的压缩:一个level-0的压缩可能会选择超过一个level-0文件因为这些文件会与其他文件有重叠。
一个压缩会合并选择的文件的内存来生成一个L+1文件序列。我们会生成一个新的L+1层的文件在当前输出文件达到文件的大小(2MB)。我们也会生成一个新的输出文件当这些key超过是个L+2文件。最后的规则保证了后续的L+1层文件的压缩不会从L+2层选择过多的数据
老文件会被删除,新文件会被添加到服务的状态中。
一个典型的压缩会通过key空间进行旋转,更多的细节是,对于没一个L层我们记住最后一个key。下一个L层的压缩会从这个key开始选择第一个文件。
合并会丢弃掉重复的值。我们也会丢弃标记删除的key,如果编号更高的层数中包含覆盖当前key的文件。
Level-0 压缩会根据从level0中取的四个1MB的文件,并且最坏情况所有的level-1(10M)。。。我们将会读14MB写14MB。
除了level0的特殊压缩,我们会从L层选择一个2MB的文件。在最坏情况,这个会与其他L+1中的12个文件重叠。压缩过程会读26MB,写26MB。假设一个磁盘的IO速度为100MB最坏情况的压缩会花费0.5秒
如果我们限制后台写的速度,假如100MB的10%,一个压缩过程会花费5秒。如果用户以10MB的速度写,我们可能会建立很多level-0文件。这样在每次合并的过程中花费会上升。
Solution 1: 减少这类问题,当level-0的文件数量足够大时我们可能会增加log文件转换的阈值。阈值下降的趋势越大,内存表需要的内存就越大。
Solution 2: 当level0文件数量上升的时候认为降低写的速率
Solution 3:降低大量合并操作的花费。大部分level-0的文件不进行压缩,而我们只在合并时考虑O(N)复杂度的算法。
不是只生成2MB的文件,而是对于更大的层级我们可以生成更大的文件以减少文件总数,尽管这样会增加合并的花费。我们可以在多个文件夹中共享文件集合。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

edge浏览器自带了翻译功能让用户们可以随时随地的进行翻译,为用户们带来了极大的便利,可也有不少的用户们表示自带的翻译网页不见了,那edge浏览器自带的翻译网页不见了怎么办?下面就让本站来介绍一下edge浏览器自带的翻译网页不见了怎么恢复方法吧。 edge浏览器自带的翻译网页不见了怎么恢复方法 1、检查是否启用了翻译功能:在Edge浏览器中,点击右上角的三个点图标,然后选择“设置”选项。在设置页面的左侧,选择“语言”选项。确保“翻译&rd

7月22日消息,今日,小米澎湃OS官微宣布小爱翻译迎来升级,实时字幕新增日韩语翻译,无字幕视频、直播会议实时转录翻译。面对面同声传译支持12种语言互译,包括中文、英语、日语、韩语、俄语、葡萄牙语、西班牙语、意大利语、法语、德语、印尼语、印地语。以上功能目前仅支持以下三款新机:小米MIXFold4小米MIXFlipRedmiK70至尊版据悉,2021年,小爱同学AI字幕宣布加入日语、韩语翻译。AI字幕采用小米自研同声传译技术,提供更快速、稳定和准确的字幕阅读体验。1.官方称,小爱翻译不仅能在影音场

它是395个字,就是495个这篇文章将向您介绍如何在Word文档中添加红线。在文档中添加红线是指对文档进行修改,以便用户可以清楚地查看所做的更改。这项功能在多人共同编辑一个文档时非常重要。redline是什么意思标记文档加红线是指使用红线或标注来指示对文档的更改、编辑或修订。这个术语的灵感来源于使用红色笔在打印文档上做标记的做法。红线批注被广泛应用在不同场景下,如:在编辑文档时为作者、编辑和审阅人清楚地显示建议的更改。在法律协议或合同中提出变更和修改对论文、演讲等提出建设性的批评和建议。如何给W

华为手机如何实现双微信登录?随着社交媒体的兴起,微信已经成为人们日常生活中不可或缺的沟通工具之一。然而,许多人可能会遇到一个问题:在同一部手机上同时登录多个微信账号。对于华为手机用户来说,实现双微信登录并不困难,本文将介绍华为手机如何实现双微信登录的方法。首先,华为手机自带的EMUI系统提供了一个很便利的功能——应用双开。通过应用双开功能,用户可以在手机上同

当您在Windows11/10计算机上打开Word文档时遇到空白页面的问题,可能需要进行修复以解决此状况。造成这一问题的根源多种多样,其中最普遍的原因之一是文档本身损坏。此外,Office文件的损坏也可能导致类似的情况。因此,本文提供的修复方法可能会对您有所帮助。您可以尝试使用一些工具来修复损坏的Word文档,或者尝试将文档转换为其他格式再重新打开。另外,检查系统中的Office软件是否需要更新也是解决此问题的一种方法。通过这些简单的步骤,您可能能够解决Word文档空白打开的Word文档在Win

编程语言PHP是一种用于Web开发的强大工具,能够支持多种不同的编程逻辑和算法。其中,实现斐波那契数列是一个常见且经典的编程问题。在这篇文章中,将介绍如何使用PHP编程语言来实现斐波那契数列的方法,并附上具体的代码示例。斐波那契数列是一个数学上的序列,其定义如下:数列的第一个和第二个元素为1,从第三个元素开始,每个元素的值等于前两个元素的和。数列的前几个元

浏览器一般都自带翻译功能,这样在浏览外文网站时就不用担心看不懂啦!谷歌浏览器也不例外,但是有用户发现自己打开谷歌浏览器的翻译功能时没有反应,失效了,这该如何处理?可以试试小编找到的最新解决办法。 操作教程: 点击右上角三个点,点击设置。 点击添加语言,添加英语和中文,并为他们做出下面设置,英语设置询问是否翻译此语言网页,中文设置以这种语言显示网页,并且中文要移至顶部,才能设置为默认语言。 如果你打开网页没有弹出是否翻译选项,右键选择翻译中文,ok。

如何在华为手机上实现微信分身功能随着社交软件的普及和人们对隐私安全的日益重视,微信分身功能逐渐成为人们关注的焦点。微信分身功能可以帮助用户在同一台手机上同时登录多个微信账号,方便管理和使用。在华为手机上实现微信分身功能并不困难,只需要按照以下步骤操作即可。第一步:确保手机系统版本和微信版本符合要求首先,确保你的华为手机系统版本已更新到最新版本,以及微信App
