RavenDB 3.0 新特性:索引后端
RavenDB 索引绝对不是简单的对 key/value 进行存储, 其功能要强大的多. 就像3.0版本的其他特性一样, 是汗水与智慧的结晶。本文我
RavenDB 索引绝对不是简单的对 key/value 进行存储, 其功能要强大的多. 就像3.0版本的其他特性一样, 是汗水与智慧的结晶。本文我主要介绍索引在后端都有哪些变动, 使它变得更快, 更稳定, 性能更好。 至于那些用户能看得到的新特性, 会在下一篇文章中提到。
内存中的索引. 历史一次又一次地证明, 只有从硬盘着手, 我们才能跟系统优化工具说再见。 为了提高创建新索引的数据读写速度, 2.5版本中开始引入只在内存中创建新索引的新概念. 而在3.0中, 这一功能得到了进一步完善. 索引数据由原来的频繁地对硬盘读写, 改为存进内存缓冲区. 只有在一些特殊情况下(如:内存不足等), 才会将索引数据写入硬盘.
通过这种方式, 可以大量减少读写索引数据的时间, 以及维护和优化硬盘的时间. 摆脱这些束缚, 即使在高负荷的情况下, 也能保持极好的性能. 而在日常使用中, 负荷的偶尔波动也不会导致硬盘出现问题.
异步删除索引. RavenDB 中的索引包含两部分, 实际数据跟元数据. 一般情况下, 元数据的要比实际数据少. 但是对于 map/reduce 索引来说, 情况刚好相反, 因为它的元数据包含了许多中间步骤相关的数据. 如果你在大规模数据库中使用LoadDocument, 我们还需要维护文档的引用,这需要大量的存储空间. 结果导致在 RavenDB 2.5 中删除索引的过程变得极其缓慢.
到了 RavenDB 3.0, 随着异步删除索引的出现, 你可迅速删除索引. 表面上看, 索引被删除了, 其实删掉的是索引名称, 其他清理工作则留给后台异步处理. 别担心如果你需要中途重启数据库, 那么在数据库启动后, 那些未完成的清理工作仍然会在后台继续. 这种异步删除方式使维护和删除包含大量数据的索引变得相当简便.
异步删除索引. RavenDB 中的索引包含两部分, 实际数据跟元数据. 一般情况下, 元数据的要比实际数据少. 但是对于 map/reduce 索引来说, 情况刚好相反, 因为它的元数据包含了许多中间步骤相关的数据. 如果你在大规模数据库中使用LoadDocument, 我们还需要维护文档的引用,这需要大量的存储空间. 结果导致在 RavenDB 2.5 中删除索引的过程变得极其缓慢.
到了 RavenDB 3.0, 随着异步删除索引的出现, 你可迅速删除索引. 表面上看, 索引被删除了, 其实删掉的是索引名称, 其他清理工作则留给后台异步处理. 别担心如果你需要中途重启数据库, 那么在数据库启动后, 那些未完成的清理工作仍然会在后台继续. 这种异步删除方式使维护和删除包含大量数据的索引变得相当简便.
索引跟任务交替执行. 任务这个词对于 RavenDB来说, 基本上指清理索引数据. 如: 清理那些已经被删除的索引记录, 或者是对已经发生改变的引用文档重新索引. 在 2.5 版本中, 这些任务会排成长队, 在队列表中等待执行, 导致许多索引任务没有及时执行. 例如:每天都有一大堆删除索引的任务在队列中排队等待, 每执行一个这样的任务又很耗时间. 在 3.0 中, 我们做了些调整, 索引跟任务的执行交替进行, 不管队列排的多满, 都不会对索引带来太大影响.
大文档索引. RavenDB 对文档大小没有限制, 这对用户来说是好事, 但是如果 RavenDB 要对这些文档索引, 那就亚历山大了. 假如我们要对一大堆文档进行索引. 那么我们会加大每一批索引的数量. 随着系统跟文档变得越来越大, 问题就开始出现了. 许多文档在索引更新后会变得变原来的文件要大的多. 比方说, 每一批处理 128K 个文档, 每个文档 250Kb, 那就意味着每一批要索引 31GB 的文档.
这么大的数据要从磁盘读出来, 需要一定的时间, 这还不包括对内存的读写时间.而用户通常都会对大数据件压缩处理. 这会导致问题变得更加严重. 因为 RavenDB只会读取文档在磁盘上的文件大小, 也就是压缩以后的文件大小. 结果可想而知. 在 3.0 中, 对这个问题采我们采取了一些预防措施. 首先是计算在内容中的文档大小,,同时也能更好的限制每次批量操作内存的数量。
被I/O限制的批量索引. RavenDB的一个核心方案是在云服务器上运行. 但实际上, 我们的客户所用的服务器各式各样. 从i2.8xlarge EC2 (32 核, 244GB 内存, 8 x 800 GB SSD 硬盘) 到 A0 Azure (共享的 CPU, 768 MB 内存, 硬盘无力吐槽, 泪奔) 都有. 由于我们实际只使用了服务器上1/4左右的可用资源. 客户老是抱怨为什么没有把剩下的资源也用上. 问题是他们用来计算可用资源的算法跟 RavenDB 的不一样, 性能方面没什么可抱怨的, 就把火发在 RavenDB 没有“有效”利用资源上.
看起来很搞笑, 其实不然. 低端的云服务器速度慢, 性能差. 尤其是I/O 的传输速率相当慢. 如果你在这样一台服务器上给一个已经在使用中的数据库创建索引, 你会发现大部分的时间都是用来等I/O操作. 久而久之, 这个问题就会越来越严重. RavenDB一开始会从硬盘读取少量数据进行批量索引(比如花个半秒钟从硬盘上读出数据). 然后下一批, 再下一批, 就这样一批接一批的处理. 当 RavenDB 发现要处理的数据太多了, 它就会增加每一批处理的数量. 结果导致等待数据从硬盘读出来的时间变得越来越久. 在网管看来, RavenDB 基本上就是卡死在那, 什么都没做.
在 RavenDB 3.0 中, 我们不再纠结I/O的速度问题. 先从硬盘读取一部分数据, 如果在一段合理的时间段内依然无法读取足够的数据, 那我们会先将已读到的数据索引, 与此同时把读取数据的任务放到后台继续执行. 等到索引执行完后, 又可以对后台读取出来的那部分数据进行索引. 这样做可以很大程度上提高性能. (客户能看到索引跟读写操作在同事进行, 不会埋怨我们的软件无所事事)
总结 – 基本上这几个新特性都是在后台运行, 用户在前台是看不到变化的. 但是他们能协调合作, 给大家带来更好的用户体验.
英文原文:What is New in RavenDB 3.0: Indexing Backend
本文永久更新链接地址:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











素因数分解 - 整数理論では、正の整数の素因数は、その整数を正確に割る素数です。これらの数を見つけるプロセスは、整数因数分解、または素因数分解と呼ばれます。例 - 288 の素因数は: 288=2x2x2x2x2

2025年、グローバルデジタル仮想通貨取引プラットフォームは、トランザクションのボリューム、セキュリティ、ユーザーエクスペリエンスなどの指標に基づいて、2025年に世界のトップ10のデジタル通貨取引プラットフォームを激しく競争しています。 OKXは、強力な技術的強さとグローバルな運用戦略で最初にランクされており、Binanceは高流動性と低料金に密接に続きます。 Gate.io、Coinbase、Krakenなどのプラットフォームは、それぞれの利点がある最前線にいます。このリストには、Huobi、Kucoin、Bitfinex、Crypto.com、Geminiなどの取引プラットフォームがそれぞれ独自の特徴がありますが、投資は注意する必要があります。プラットフォームを選択するには、セキュリティ、流動性、料金、ユーザーエクスペリエンス、通貨選択、規制コンプライアンスなどの要因を考慮し、合理的に投資する必要があります

トップ10の仮想通貨取引プラットフォームのランキング(2025年の最新): Binance:グローバルリーダー、高い流動性、規制が注目を集めています。 OKX:大規模なユーザーベース、複数の通貨をサポートし、レバレッジされた取引を提供します。 gate.io:さまざまなフィアット通貨支払い方法を備えた上級交換は、さまざまな取引ペアと投資商品を提供します。 Bitget:デリバティブ交換、高流動性、低料金。 Huobi:さまざまな通貨と取引ペアをサポートする古い交換。 コインベース:厳密に規制されている有名なアメリカの交換。 フェメックスなど。

トップ10のデジタル通貨取引プラットフォーム:1。OKX、2。BINANCE、3。GATE.IO、4。HuobiGlobal、5。Kraken、6。Coinbase、7。Kucoin、8。Bitfinex、9。Crypto.com、10。Gemini、これらの交換は、ユーザーがユーザーを選択できます。

この記事では、10個のデジタル通貨トレーディング。プラットフォームを選択する際には、セキュリティ、流動性、取引料、通貨選択、ユーザーインターフェイス、カスタマーサービスサポート、規制コンプライアンスなどの要因を考慮し、リスクを慎重に評価し、盲目的にトレンドに従うことはありません。

信頼できるデジタル通貨プラットフォームには、1。OKX、2。GATE.IO、4。HuobiGlobal、6。Coinbase、7。Bitfinex、9。Crypto.com、10。Geminiが顧客を選択することができます。

トップの仮想通貨プラットフォームは次のとおりです。 ランキングは、プラットフォームの流動性、通貨の選択、セキュリティ、ユーザーエクスペリエンス、取り扱い料、コンプライアンスなどの包括的な考慮事項に基づいていますが、参照のみがお客様の責任である必要があります。

デジタル通貨市場が急増するため、この記事には、投資家が信頼できる使いやすいプラットフォームを選択できるように、上位10のデジタル通貨取引アプリをリストします。ランキングリストには、Binance、Coinbase、Gemini、Kraken、FTX、Huobi、Okx、Bitfinex、Crypto.com、およびgate.ioが含まれます。これらのアプリは、幅広い取引ペア、安全で信頼性の高いプラットフォーム、低い取引手数料、高流動性を提供します。投資家は、セキュリティ、ユーザーフレンドリー、取引手数料、流動性、サポート通貨、顧客サービスなどの要因に基づいて、ニーズを最大限に満たすアプリを選択する必要があります。
