本篇文章給大家分享的是有關(guān)Milvus在流式數(shù)據(jù)場(chǎng)景下的性能表現(xiàn)是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比河間網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式河間網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋河間地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。
Milvus 作為一款開(kāi)源的特征向量相似度搜索引擎,其開(kāi)源半年以來(lái),在全球已經(jīng)有數(shù)百家企業(yè)或組織用戶。這些用戶涉及各個(gè)領(lǐng)域,包括金融、互聯(lián)網(wǎng)、電商、生物制藥等。在部分用戶的生產(chǎn)場(chǎng)景中,其數(shù)據(jù)大多是持續(xù)地、動(dòng)態(tài)地生成,且要求這些動(dòng)態(tài)生成的數(shù)據(jù)入庫(kù)后能很快被檢索到。
大數(shù)據(jù)處理可分為批式大數(shù)據(jù)(又稱為“歷史大數(shù)據(jù)”)處理和流式大數(shù)據(jù)(又稱為“實(shí)時(shí)大數(shù)據(jù)”)處理兩類。在大多數(shù)情況下,流數(shù)據(jù)在處理持續(xù)生成的動(dòng)態(tài)新數(shù)據(jù)方面具有顯著優(yōu)勢(shì)。流數(shù)據(jù)是指由多個(gè)數(shù)據(jù)源持續(xù)生成的數(shù)據(jù),通常同時(shí)以較小規(guī)模的數(shù)據(jù)記錄的形式發(fā)送,約幾千字節(jié)。流數(shù)據(jù)可為各種形式的數(shù)據(jù),例如網(wǎng)購(gòu)數(shù)據(jù)、社交網(wǎng)站信息、地理空間服務(wù),以及通過(guò)遙感器測(cè)控得到的數(shù)據(jù)。
在用戶需求的驅(qū)動(dòng)下, Milvus 不斷增加其功能,探索更多的應(yīng)用場(chǎng)景。Milvus 動(dòng)態(tài)數(shù)據(jù)管理策略,使得用戶可以隨時(shí)對(duì)數(shù)據(jù)進(jìn)行插入、刪除、搜索、更新等操作,無(wú)需受到靜態(tài)數(shù)據(jù)帶來(lái)的困擾。在插入或更新數(shù)據(jù)之后,幾乎可以立刻對(duì)插入或更新過(guò)的數(shù)據(jù)進(jìn)行檢索, Milvus 能夠保證搜索結(jié)果的準(zhǔn)確率和數(shù)據(jù)一致性。同時(shí)在源源不斷的數(shù)據(jù)導(dǎo)入過(guò)程中, Milvus 依然能夠保持優(yōu)秀的檢索性能。由于這些特性, Milvus 可以很好地適用于流式大數(shù)據(jù)的場(chǎng)景。
在很多用戶場(chǎng)景中,結(jié)合了批式大數(shù)據(jù)和流式大數(shù)據(jù)兩種處理方式,從而構(gòu)建一種混合模式,來(lái)同時(shí)維持實(shí)時(shí)處理和批處理。比如在推薦系統(tǒng)的實(shí)現(xiàn)中,無(wú)論是文章、音樂(lè)、視頻等推薦或者是電商平臺(tái)的商品推薦,都存在許多歷史數(shù)據(jù)。平臺(tái)給用戶做推薦時(shí),部分歷史數(shù)據(jù)依舊有被推薦的價(jià)值,因此這些歷史數(shù)據(jù)需要經(jīng)過(guò)去重、過(guò)濾等處理然后存入 Milvus 中。除了歷史保留的數(shù)據(jù),在推薦系統(tǒng)中每天還會(huì)產(chǎn)生新的數(shù)據(jù),包括新的文章、熱點(diǎn)以及新的商品等,這些數(shù)據(jù)也要及時(shí)的導(dǎo)入庫(kù)中并且要求能夠很快被檢索到,這些持續(xù)產(chǎn)生的數(shù)據(jù)就是流式數(shù)據(jù)。
隨著越來(lái)越多的用戶有動(dòng)態(tài)插入數(shù)據(jù)、實(shí)時(shí)檢索的需求,本文將介紹一下基于 Kafka 實(shí)現(xiàn)的 Milvus 在流式數(shù)據(jù)場(chǎng)景下的參數(shù)配置和檢索的性能。
Kafka 是一個(gè)開(kāi)源的流處理平臺(tái),這里將介紹基于 Kafka 實(shí)現(xiàn)的 Milvus 在流式數(shù)據(jù)下的兩個(gè)應(yīng)用示例。
示例一
該系統(tǒng)中使用 Kafka 接收各個(gè)客戶端產(chǎn)生的數(shù)據(jù)來(lái)模擬生成的流式數(shù)據(jù)。當(dāng) Kafka 消息隊(duì)列中有數(shù)據(jù)時(shí),數(shù)據(jù)接收端持續(xù)從 Kafka 隊(duì)列中讀取數(shù)據(jù)并立即插入 Milvus 中。 Milvus 中插入向量的數(shù)據(jù)量是可大可小的,用戶可一次插入十條向量,也可一次插入數(shù)十萬(wàn)條向量。該示例適用于數(shù)據(jù)實(shí)時(shí)性要求較高的場(chǎng)景。全過(guò)程如圖所示:
配置:
index_file_size : 在 Milvus 中,數(shù)據(jù)是分文件存儲(chǔ)的,每個(gè)數(shù)據(jù)文件大小在建立集合的時(shí)候由參數(shù) index_file_size 值來(lái)定義。數(shù)據(jù)寫(xiě)入磁盤(pán)后,成為原始數(shù)據(jù)文件,保存的是向量的原始數(shù)據(jù),每當(dāng)原始數(shù)據(jù)文件大小達(dá)到 index_file_size 值后,便會(huì)觸發(fā)建立索引,索引建立完成后會(huì)生成一個(gè)索引數(shù)據(jù)文件。
Milvus 進(jìn)行檢索時(shí),將在索引文件中去檢索。對(duì)于未建立索引的數(shù)據(jù),將會(huì)在原始數(shù)據(jù)文件中檢索。由于未建立索引的部分,檢索會(huì)比較慢,因此 index_file_size 不宜設(shè)置得過(guò)大,本示例中該值設(shè)置為 512。(若 index_file_size 過(guò)大,會(huì)使得未建立索引的數(shù)據(jù)文件較大,降低檢索性能。)
nlist : 該值表示 Milvus 建立索引后,每個(gè)數(shù)據(jù)文件里的向量被分為多少個(gè)“簇”。本示例中將該值設(shè)置為 1024。
Milvus 在不斷插入數(shù)據(jù)的過(guò)程中,會(huì)不停的建立索引。為了保證檢索的效率,這里選擇了用 GPU 資源建立索引,用 CPU 資源進(jìn)行檢索。
性能:
本示例中,在持續(xù)導(dǎo)入數(shù)據(jù)之前,向集合中插入了一億條 128 維的向量,并建立 IVF_SQ8 索引,來(lái)模擬歷史數(shù)據(jù)。此后持續(xù)的向該集合中隨機(jī)的間隔 1-8 秒插入 250-350 條向量。隨后進(jìn)行多次檢索,檢索性能如下:
在上述性能記錄中,第一次檢索時(shí)間指的是每次有新增數(shù)據(jù)導(dǎo)入后的檢索時(shí)間,第二次檢索時(shí)間是在第一次檢索后沒(méi)有新的數(shù)據(jù)導(dǎo)入前的檢索時(shí)間。
橫向比較,發(fā)現(xiàn)第一次檢索時(shí)間大于第二次,是因?yàn)榈谝淮螜z索時(shí)會(huì)將新導(dǎo)入的數(shù)據(jù)從磁盤(pán)加載到內(nèi)存。
縱向比較來(lái)看,在數(shù)據(jù)持續(xù)導(dǎo)入過(guò)程中,第一次檢索耗時(shí)持續(xù)增長(zhǎng)。這是因?yàn)樵诔掷m(xù)導(dǎo)入數(shù)據(jù)的過(guò)程中,新增數(shù)據(jù)文件會(huì)和之前未建立索引的數(shù)據(jù)文件合并,檢索時(shí)會(huì)將新合并的數(shù)據(jù)文件從磁盤(pán)加載到內(nèi)存。隨著導(dǎo)入數(shù)據(jù)的增多,合并好的這個(gè)新文件會(huì)越來(lái)越大,從磁盤(pán)加載到內(nèi)存的耗時(shí)也將增加。其次,導(dǎo)入的這部分?jǐn)?shù)據(jù)都未建立索引,隨著未建立索引的數(shù)據(jù)增多,在這部分?jǐn)?shù)據(jù)中檢索的時(shí)間也會(huì)逐步增加。第二次檢索耗時(shí)也越來(lái)越長(zhǎng),但其耗時(shí)增長(zhǎng)幅度相較于第一次較小。是因?yàn)榈诙螜z索沒(méi)有將數(shù)據(jù)從磁盤(pán)加載到內(nèi)存的過(guò)程,耗時(shí)增長(zhǎng)只是因?yàn)槲唇⑺饕臄?shù)據(jù)越來(lái)越多。數(shù)據(jù)在導(dǎo)入到約 100 萬(wàn)條的時(shí)候(每個(gè)數(shù)據(jù)文件是 512 MB , 向量 128 維,所以每個(gè)數(shù)據(jù)文件約 100 萬(wàn)條向量),觸發(fā)了建索引的閾值。當(dāng)索引建立完成,檢索時(shí)均是在索引文件中進(jìn)行檢索的,所以這個(gè)時(shí)候的第二次檢索時(shí)間又回到動(dòng)態(tài)導(dǎo)入數(shù)據(jù)前的性能。
在本示例持續(xù)導(dǎo)入數(shù)據(jù)的過(guò)程中(累計(jì)導(dǎo)入約 100 萬(wàn)),每隔 5 秒采樣查詢一次,并記錄其查詢時(shí)間。整個(gè)過(guò)程查詢性能趨勢(shì)如下圖所示,縱坐標(biāo)表示查詢耗時(shí),橫坐標(biāo)表示整個(gè)查詢過(guò)程的時(shí)刻,以秒為單位。
在這個(gè)折線圖中,大部分點(diǎn)(圖中處于上方的這些點(diǎn))對(duì)應(yīng)上述表格中的第一次檢索時(shí)間。從圖可以看出,導(dǎo)入數(shù)據(jù)后的第一次檢索時(shí)間有較大幅度上升的趨勢(shì)。少數(shù)點(diǎn)(圖中處于下方的這些點(diǎn))對(duì)應(yīng)上述表格中的第二次檢索時(shí)間,第二次檢索時(shí)間有一個(gè)稍微上升的趨勢(shì)。在該示例中,因?yàn)閿?shù)據(jù)頻繁導(dǎo)入,所以檢索時(shí)更多的是在有新數(shù)據(jù)導(dǎo)入后去檢索的情況。從上述圖中還可以看到,當(dāng)導(dǎo)入數(shù)據(jù)總量達(dá)到建索引的閾值時(shí),建立完索引之后的查詢時(shí)間又恢復(fù)到動(dòng)態(tài)導(dǎo)入數(shù)據(jù)之前的水平。
同時(shí)經(jīng)測(cè)試,新插入的數(shù)據(jù),在一兩秒后即能被檢索到。
示例二
該系統(tǒng)中使用 Kafka 接收各個(gè)客戶端產(chǎn)生的數(shù)據(jù)來(lái)模擬生成的流式數(shù)據(jù),當(dāng) Kafka 隊(duì)列中有數(shù)據(jù)到達(dá)時(shí),讀取 Kafka 中的數(shù)據(jù),當(dāng)數(shù)據(jù)積累到一定量(本示例中為 10 萬(wàn))的時(shí)候,批量插入 Milvus 中,這樣能夠減少插入次數(shù),提高整體檢索性能。該示例適用于對(duì)數(shù)據(jù)實(shí)時(shí)性要求不那么高的場(chǎng)景。該過(guò)程流程如圖:
配置:該示例的配置同示例一。
性能:在導(dǎo)入新的數(shù)據(jù)之前,查詢耗時(shí)約 0.027 秒。在后續(xù)導(dǎo)入過(guò)程中,每次批量插入 10 萬(wàn)條數(shù)據(jù)。數(shù)據(jù)導(dǎo)入過(guò)程中,數(shù)據(jù)導(dǎo)入后的第一次檢索時(shí)間以及第二次檢索時(shí)間和示例一的表中顯示時(shí)間差不多。由于沒(méi)有頻繁的數(shù)據(jù)導(dǎo)入操作,所以在檢索時(shí),大多數(shù)時(shí)候的檢索時(shí)間都對(duì)應(yīng)上述表中的第二次檢索時(shí)間。
在本示例持續(xù)批量導(dǎo)入數(shù)據(jù)的過(guò)程中(累計(jì)導(dǎo)入約 100 萬(wàn)),每隔 5 秒采樣查詢一次,并記錄其查詢時(shí)間。整個(gè)過(guò)程查詢性能趨勢(shì)如下圖所示,縱坐標(biāo)表示查詢耗時(shí),橫坐標(biāo)表示整個(gè)查詢過(guò)程的時(shí)刻,以秒為單位。
在該該折線圖中可以看到,由于插入頻率降低,所以大多數(shù)檢索時(shí)對(duì)應(yīng)示例一表格中的第二次檢索時(shí)間。只有在每次導(dǎo)入十萬(wàn)數(shù)據(jù)后,檢索耗時(shí)相對(duì)較長(zhǎng)。同樣的,在建完索引之后,查詢時(shí)間也恢復(fù)到導(dǎo)入數(shù)據(jù)之前的水平。
從上述兩個(gè)示例的性能表現(xiàn)折線圖來(lái)看,在有頻繁的檢索操作,同時(shí)對(duì)新增數(shù)據(jù)的實(shí)時(shí)性要求不高的情況,累計(jì)批量數(shù)據(jù)插入是更優(yōu)的選擇。
以上就是Milvus在流式數(shù)據(jù)場(chǎng)景下的性能表現(xiàn)是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁(yè)標(biāo)題:Milvus在流式數(shù)據(jù)場(chǎng)景下的性能表現(xiàn)是什么
鏈接URL:http://muchs.cn/article44/jsoeee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、電子商務(wù)、軟件開(kāi)發(fā)、定制開(kāi)發(fā)、自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)