申東凡,楊 庚
(1.南京郵電大學(xué) 計算機(jī)學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,江蘇 南京 210023;2.江蘇省大數(shù)據(jù)安全與智能處理重點實驗室,江蘇 南京 210023)
在大數(shù)據(jù)時代,傳統(tǒng)關(guān)系數(shù)據(jù)庫在對大量數(shù)據(jù)進(jìn)行同時查詢時擴(kuò)展性差,讀寫速度較慢。雖然數(shù)據(jù)庫分布式存儲的應(yīng)用[1]和水平、垂直切分等技術(shù)能夠緩解上述問題,但數(shù)據(jù)遷移比較困難,對性能的要求和管理成本都相對較高。新興的非關(guān)系數(shù)據(jù)庫NoSQL[2-5]存儲靈活,模式自由,便于擴(kuò)展,但每個NoSQL系統(tǒng)都有自己的API,往往不支持SQL和JDBC的標(biāo)準(zhǔn),因此關(guān)系數(shù)據(jù)庫和NoSQL都不能全面高效地應(yīng)對大數(shù)據(jù)時代的挑戰(zhàn),兩者結(jié)合使用的方案應(yīng)運而生?,F(xiàn)有的關(guān)系與NoSQL集成方案[6-7]的查詢語言沒有統(tǒng)一標(biāo)準(zhǔn),系統(tǒng)的可移植性低,且關(guān)系數(shù)據(jù)庫沒有對隱私數(shù)據(jù)進(jìn)行保護(hù),不能保證數(shù)據(jù)的安全性。
針對數(shù)據(jù)安全面臨的威脅[8],隱私保護(hù)成為重要的研究內(nèi)容,對隱私數(shù)據(jù)加密存儲是一種簡單可行的解決方案。文獻(xiàn)[9-10]提出的可搜索加密技術(shù)解決了傳統(tǒng)數(shù)據(jù)加密存儲在云端后,用戶無法直接操作密文數(shù)據(jù)的問題,提高了密文數(shù)據(jù)庫的檢索效率?,F(xiàn)有的對數(shù)據(jù)庫操作系統(tǒng)層、數(shù)據(jù)庫管理系統(tǒng)DBMS(database management system)內(nèi)核層以及DBMS外層的加解密服務(wù)都存在一定的缺陷。文獻(xiàn)[11-12]提出的數(shù)據(jù)庫中間件技術(shù)將上層應(yīng)用與底層數(shù)據(jù)庫隔離,實現(xiàn)在業(yè)務(wù)層對數(shù)據(jù)的加密和更改操作,并且不會影響其他組建應(yīng)用。
文中提出的中間件系統(tǒng)以標(biāo)準(zhǔn)SQL語言同時操作密文數(shù)據(jù)庫和NoSQL,實現(xiàn)異構(gòu)數(shù)據(jù)庫的集成。其中關(guān)系數(shù)據(jù)庫存儲隱私數(shù)據(jù),采用可搜索加密技術(shù),NoSQL存儲非結(jié)構(gòu)化數(shù)據(jù)。中間件不僅保障了數(shù)據(jù)的安全性和機(jī)密性,也為應(yīng)用程序提供統(tǒng)一的接口,滿足水平可伸縮性的需要而不影響應(yīng)用程序邏輯實現(xiàn),可以更加高效地處理海量數(shù)據(jù)。
在過去的幾十年里,關(guān)系系統(tǒng)因具有規(guī)范的查詢語言和接口標(biāo)準(zhǔn)、支持事務(wù)處理保持?jǐn)?shù)據(jù)的一致性等特點,一直是數(shù)據(jù)存儲的主要形式。為了適應(yīng)大數(shù)據(jù)時代海量數(shù)據(jù)處理,非關(guān)系系統(tǒng)被廣泛應(yīng)用在許多領(lǐng)域來處理關(guān)系數(shù)據(jù)庫難以解決的問題。NoSQL系統(tǒng)擴(kuò)展性較好,但是缺乏通用標(biāo)準(zhǔn)API和標(biāo)準(zhǔn)化查詢語言,這使得系統(tǒng)的可移植性降低。關(guān)系數(shù)據(jù)庫使用標(biāo)準(zhǔn)化SQL,有JDBC、ODBC等通用訪問接口,具有可移植性。為了充分利用SQL的價值,為新興的NoSQL數(shù)據(jù)庫提供SQL訪問具有很大的研究價值。
目前的研究成果主要集中在如何結(jié)合SQL與NoSQL系統(tǒng)以及標(biāo)準(zhǔn)化的API,文獻(xiàn)[13]中SQL查詢轉(zhuǎn)換使用正則表達(dá)式和規(guī)則直接分析字符串完成,而不是使用查詢解析器和翻譯器。文獻(xiàn)[14]提出了一個在關(guān)系模型中表示NoSQL數(shù)據(jù)的框架,以及將SQL查詢映射到NoSQL系統(tǒng),但在此框架中,所有查詢操作都在SQL數(shù)據(jù)庫中執(zhí)行,并將非關(guān)系數(shù)據(jù)映射到關(guān)系數(shù)據(jù)庫,占用了大量空間。
網(wǎng)絡(luò)時代數(shù)據(jù)激增使其存儲安全問題[15-16]亟待解決,數(shù)據(jù)在第三方平臺上可能會受到來自外部和內(nèi)部的攻擊。Song等[17]研究的可搜索加密技術(shù)實現(xiàn)在不解密的情況下可執(zhí)行密文查詢。麻省理工學(xué)院MIT研究提出的CryptDB[18-19]借助數(shù)據(jù)屬性分拆和中間件改寫查詢的設(shè)計實現(xiàn)了密文數(shù)據(jù)查詢,有效緩解了上述研究帶來的用戶主機(jī)負(fù)載大、對數(shù)據(jù)庫密文查詢支持度弱的問題,為使用數(shù)據(jù)庫管理系統(tǒng)(DBMS)的應(yīng)用程序提供機(jī)密性。
NoSQL處理海量數(shù)據(jù)有強(qiáng)大功能,但實際應(yīng)用中不能完全拋開關(guān)系數(shù)據(jù)庫,異構(gòu)數(shù)據(jù)庫的集成,是一種可選方案。針對NoSQL沒有通用API和標(biāo)準(zhǔn)的查詢語言以及與關(guān)系數(shù)據(jù)庫的異構(gòu)問題,考慮數(shù)據(jù)的安全性,文中設(shè)計并實現(xiàn)了一種面向隱私保護(hù)的異構(gòu)數(shù)據(jù)庫集成中間件系統(tǒng)。該系統(tǒng)使用標(biāo)準(zhǔn)SQL統(tǒng)一操作密文數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫,屏蔽底層數(shù)據(jù)庫的異構(gòu)性。
面向隱私保護(hù)的異構(gòu)數(shù)據(jù)庫集成中間件系統(tǒng)結(jié)構(gòu)圖如圖1所示。
圖1 面向隱私保護(hù)的異構(gòu)數(shù)據(jù)庫
其中數(shù)據(jù)存儲層包含兩種類型的數(shù)據(jù)庫:關(guān)系數(shù)據(jù)庫和NoSQL。其中關(guān)系數(shù)據(jù)庫使用MySQL為例,并對隱私數(shù)據(jù)采用可搜索加密算法加密,NoSQL選擇MongoDB,存儲非結(jié)構(gòu)化數(shù)據(jù)。中間件用來屏蔽數(shù)據(jù)存儲層的異構(gòu)性差異,提供統(tǒng)一的訪問接口,且文中對數(shù)據(jù)源的處理除了查詢操作,還支持插入、刪除、更新、連接等操作。
明文數(shù)據(jù)庫直接存儲到云端,隱私數(shù)據(jù)的安全性得不到保障,因此需要對關(guān)系數(shù)據(jù)庫中已有的明文數(shù)據(jù)進(jìn)行加密,中間件實現(xiàn)明密文數(shù)據(jù)庫映射步驟如下:
2.1.1 獲取明文表信息
獲取數(shù)據(jù)庫所有表名,保存到數(shù)組中,由表名循環(huán)得到各個列名,嵌套查詢到數(shù)據(jù)內(nèi)容,將其保存。
2.1.2 修改明文表的結(jié)構(gòu)
使用可搜索加密算法對原有數(shù)據(jù)加密,該算法包含確定加密、保序加密、同態(tài)加密三種模型,原始表的字段需要被擴(kuò)展和修改,須創(chuàng)建滿足密文結(jié)構(gòu)的密文表。如:
用戶輸入語句為:
insert into tablename (column_1,column_2) values (value_1,value_2);
經(jīng)過加密改寫后的語句為:
insert into tablename (mycolumn_1_DET,mycolumn_1_OPE,mycolumn_1_HOM,mycolumn_2_DET)
values(value_1_DET,value_1_OPE,value_1_HOM,value_2_DET);
原明文數(shù)據(jù)表的結(jié)構(gòu)發(fā)生了變化,需要創(chuàng)建新的表存儲密文數(shù)據(jù)。
2.1.3 數(shù)據(jù)加密
讀取保存的明文數(shù)據(jù),調(diào)用可搜索加密算法,循環(huán)批量加密插入對應(yīng)的密文表,此過程與單純加密數(shù)據(jù)不同的是要保持原有數(shù)據(jù)的約束,保證明文表的主鍵在新的密文表中仍然有主鍵特性。
2.1.4 實現(xiàn)新舊數(shù)據(jù)庫的融合
刪除原有明文數(shù)據(jù),用戶的所有操作都直接在密文表上執(zhí)行,SQL改寫模塊將明文SQL改寫為可在密文上執(zhí)行的操作SQL語句,整個映射過程對用戶透明,減少了用戶執(zhí)行復(fù)雜操作的負(fù)擔(dān)。
具體過程如圖2所示。
圖2 明密文數(shù)據(jù)庫映射流程
中間件的核心模塊包括路由選擇模塊、SQL改寫模塊、加解密模塊、SQL解析模塊以及SQL轉(zhuǎn)換模塊。中間件執(zhí)行流程如圖3所示。應(yīng)用層傳來SQL請求,路由選擇模塊判斷該請求操作密文數(shù)據(jù)庫或NoSQL,若為密文數(shù)據(jù)庫請求,則進(jìn)行SQL改寫,否則進(jìn)行SQL解析和轉(zhuǎn)換,生成MongoDB可識別的操作語句,若是查詢操作,對結(jié)果進(jìn)行翻譯和轉(zhuǎn)化,最后將統(tǒng)一格式的結(jié)果返回給用戶。
圖3 中間件執(zhí)行過程
該模塊主要實現(xiàn)對請求數(shù)據(jù)庫類型的判斷,使用表名來確定要訪問數(shù)據(jù)庫的類型,業(yè)務(wù)開發(fā)人員保證在同一域中數(shù)據(jù)庫不能建立名稱相同的表,以避免出現(xiàn)混亂。路由選擇模塊中存有路由信息表(RouteInfoTable),該表存儲不同數(shù)據(jù)庫的表名。分析SQL請求,對照表名與路由信息表的信息,判斷請求的數(shù)據(jù)庫類型,若為密文數(shù)據(jù)庫,則交由SQL改寫模塊,否則,對SQL進(jìn)行解析和轉(zhuǎn)換。考慮數(shù)據(jù)量大的情況可能有很多表名,為了加快查詢速度,在路由選擇模塊緩存常用的表名,稱為路由信息緩存表(RouteInfoCacheTable),它是路由信息表的子表,用來存儲訪問頻率比較高的表名,這樣每次先匹配路由信息緩存表,減少查詢時間。
SQL解析模塊將SQL語句轉(zhuǎn)化為抽象語法解析樹(abstract syntax tree,AST)。用戶輸入的SQL請求經(jīng)過詞法和語法分析,輸出抽象語法樹,查詢解析器支持SELECT,INSERT,UPDATE和DELETE語句的標(biāo)準(zhǔn)SQL語法,以及內(nèi)部外部連接,子查詢和GROUP BY,ORDER BY。
該模塊由三個部分組成:解析(parser)、抽象語法樹(AST)和抽象語法樹訪問(AST visitor)。
2.4.1 解 析
Parser將輸入文本轉(zhuǎn)換為抽象語法樹,包括詞法和語法分析。用戶輸入SQL請求,如:Select id,name,age from Student where score>90;首先詞法分析解析出語句中每個單詞,然后進(jìn)行語法分析,使組合成的語句有一定的語法規(guī)則,語法解析器根據(jù)語法規(guī)則,解析出此語句的唯一含義。
2.4.2 抽象語法樹
抽象語法樹是SQL語句經(jīng)過解析過程的詞法、語法分析后生成的,表示語言結(jié)構(gòu)中的層次關(guān)系,形式化表示出語言中的語義。Select id,name,age from Student where score>90,轉(zhuǎn)換成對應(yīng)的抽象語法樹如圖4所示,根據(jù)該樹狀結(jié)構(gòu),得出被查詢對象是id,name,age,查詢主體為Student,查詢條件為score>90,將SQL轉(zhuǎn)換成抽象語法樹,層次清晰,便于查找。
圖4 抽象語法樹
2.4.3 抽象語法樹訪問
抽象語法樹訪問的功能是遍歷AST,其目的是正確表達(dá)語義。該模塊使用VISITOR模式遍歷,從根節(jié)點開始,到最后一個葉子節(jié)點為止,在遍歷的過程中,不斷收集信息到一個上下文中。完成整個遍歷過程后,AST所表達(dá)的語法含義,被保存到上下文。
該模塊遍歷SQL解析模塊得到的內(nèi)容,獲取其表名、字段名、查詢條件、操作方法、數(shù)據(jù)內(nèi)容等相關(guān)信息,根據(jù)NoSQL語法,對應(yīng)組合轉(zhuǎn)換生成MongoDB可識別的語句,在NoSQL上執(zhí)行操作。關(guān)系數(shù)據(jù)庫的表名、行名、列名、數(shù)據(jù)分別對應(yīng)于非關(guān)系數(shù)據(jù)庫MongoDB的集合名、文檔、字段、值等,根據(jù)此對應(yīng)關(guān)系形成SQL與NoSQL語句的映射。
查詢語句
Select url from course where title="JAVA";
經(jīng)過SQL轉(zhuǎn)換后的語句為:
db.course.find({"title":"JAVA"},
{"url":"https://www.atguigu.com"});
更新語句
Update course set url="https://www.icourse163.org/" where
title="MongoDB";
經(jīng)過SQL轉(zhuǎn)換后的語句為:
db.course.update({title: "MongoDB"},
{$set:{url="https://www.icourse163.org/"}},
{multi: true });
該模塊的功能是對關(guān)系數(shù)據(jù)庫請求的SQL進(jìn)行改寫,生成可在密文上直接執(zhí)行的SQL語句。解析函數(shù)針對不同的查詢類型執(zhí)行相應(yīng)的操作,對Create、Select、Insert、Update、Delete中的明文數(shù)據(jù)進(jìn)行加密,并且擴(kuò)展、修改列名。對數(shù)值型數(shù)據(jù),擴(kuò)展為三列,分別用確定加密、保序加密、同態(tài)加密算法加密該列,對于字符型數(shù)據(jù),只用確定加密算法。下面通過一個例子說明SQL語句改寫過程,更新員工表,用戶輸入:
update Employee set city='Nanjing'
whereEmployeeId=10;
經(jīng)過SQL改寫模塊,上述語句輸出為:
UPDATE Employee SETytic_DET=
'9ur1uvonEfaJZ/8pAOFwuQ=='
WHERE dIeeyolpmE_DET=
'HRwGHDSkRhxgiAhq0g2b/w==';
EmployeeId=10屬于等值匹配的操作謂詞,解析函數(shù)調(diào)用加解密模塊對明文數(shù)字10使用等值加密模型進(jìn)行加密,得到密文'HRwGHDSkRhxgiAhq0g2b/w==',列名為city,更新值為'Nanjing',因為city對應(yīng)的數(shù)據(jù)類型為字符型,所以僅將該列改寫為等值加密模型下的列名city_DET,并將值'Nanjing'使用確定加密算法得到密文'9ur1uvonEfaJZ/8pAOFwuQ=='。輸出改寫后的SQL語句,直接在密文上進(jìn)行增刪改查操作。
該模塊在中間件中的功能是對關(guān)系數(shù)據(jù)庫中的隱私數(shù)據(jù)進(jìn)行加解密,為了實現(xiàn)直接在密文數(shù)據(jù)上執(zhí)行SQL查詢,利用了基于CryptDB的洋蔥加密模型,加密模型如圖5所示。
圖5 加密模型
2.7.1 等值加密模型
等值加密模型用來實現(xiàn)等值比較,該模型采用兩層結(jié)構(gòu),內(nèi)層使用確定加密算法(deterministic encryption algorithm,DEA)生成內(nèi)層密文,外層使用隨機(jī)加密算法(random encryption algorithm,REA)再次對數(shù)據(jù)進(jìn)行加密。在進(jìn)行兩個密文等值比較時,中間件先將外層密文解密,完成等值比較后再進(jìn)行隨機(jī)加密。使用兩層加密結(jié)構(gòu)在保證數(shù)據(jù)安全性的同時,還支持密文的等值比較。
2.7.2 保序加密模型
保序加密模型用于實現(xiàn)直接在密文上進(jìn)行順序比較。該模型采用單層加密,使用保序加密算法(order preserving encryption algorithm,OPEA)加密后,密文能夠保持明文的順序關(guān)系。
2.7.3 同態(tài)加密模型
同態(tài)加密模型用于實現(xiàn)在密文上進(jìn)行數(shù)據(jù)庫操作中的求和以及求平均數(shù)。該模型也采用單層加密,使用同態(tài)加密算法(homomorphic encryption algorithm,HEA)進(jìn)行加乘運算時,解密后的密文運算結(jié)果與直接在明文上進(jìn)行加乘運算結(jié)果等同。
中間件連接MySQL客戶端,返回的結(jié)果要以關(guān)系數(shù)據(jù)庫的格式呈現(xiàn)。結(jié)果解析轉(zhuǎn)換模塊解析查詢返回的文檔形式的結(jié)果,獲取集合名、文檔、字段、值等,分別對應(yīng)于關(guān)系數(shù)據(jù)庫的表名、行、列名、數(shù)據(jù)。經(jīng)過此模塊對應(yīng)轉(zhuǎn)換合成標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫格式,將獲取的數(shù)據(jù)記錄組合為一個單一的查詢結(jié)果返回給用戶。下面通過一個例子說明,假設(shè)MongoDB查詢結(jié)果為:
{"_id":1999,"title":"MongoDB Demo","description":"database","by":"baidu point","url":"http://www.baidu.com/mongodb/","new_field":""}
經(jīng)過解析翻譯模塊返回統(tǒng)一的關(guān)系數(shù)據(jù)庫格式如圖6所示。
id1999titleMongoDB Demodescriptiondatabasebyyiibai pointurlhttp://www.yiibai.com/mongodb/new_field
圖6 關(guān)系數(shù)據(jù)庫格式
分別對中間件的性能以及密文數(shù)據(jù)庫加解密時間進(jìn)行測試分析。
系統(tǒng)采用Java編程語言,在Windows10操作系統(tǒng)上安裝MySQL和MongoDB作為SQL與NoSQL集成存儲架構(gòu)的數(shù)據(jù)存儲層,其中MongoDB采用自動分片的Shard模式。
開發(fā)環(huán)境如下:
硬件:處理器為Intel Core i5-3230M,內(nèi)存為6 GB;
軟件:操作系統(tǒng)為Windows 10,Java開發(fā)環(huán)境為JDK1.8,MySQL版本為5.7.0,MongoDB版本為3.0.1 2008R2Plus SSL。
3.2.1 中間件性能測試
客戶端訪問MySQL數(shù)據(jù)庫和MongoDB服務(wù)。使用JDBC訪問數(shù)據(jù)庫服務(wù)器,該實驗對SELECT操作在有無中間件的情況下分別進(jìn)行測試,每個SELECT操作的間隔為10 ms,查詢表中包含10個字段。
圖7描述了密文數(shù)據(jù)庫使用中間件前后吞吐量與客戶端連接數(shù)的關(guān)系。不使用中間件時,應(yīng)用程序直接連接密文數(shù)據(jù)庫,執(zhí)行SQL請求。添加中間件后,對SQL語句進(jìn)行分析、路由、改寫等語義轉(zhuǎn)換,這些邏輯操作會帶來一些性能損失,吞吐量隨著客戶端連接數(shù)的增加而增加,當(dāng)客戶端連接數(shù)為60時,吞吐量達(dá)到最大值,加入中間件后,系統(tǒng)的吞吐量將會平均每秒減少1 000條記錄。
圖7 客戶端連接數(shù)與吞吐量的關(guān)系
圖8 客戶端連接數(shù)與響應(yīng)時間的關(guān)系
圖8描述的是密文數(shù)據(jù)庫使用中間件前后響應(yīng)時間與客戶端連接數(shù)的關(guān)系。添加中間件后,平均響應(yīng)時間將會增加11 ms,邏輯處理帶來的性能損失在可接受的范圍之內(nèi)。使用中間件可以在水平方向?qū)?shù)據(jù)庫進(jìn)行擴(kuò)展,且加解密和集成異構(gòu)數(shù)據(jù)庫的業(yè)務(wù)在中間件完成,不需要更改數(shù)據(jù)庫底層源碼,帶來便利性和可擴(kuò)展性。
3.2.2 mongo-jdbc與中間件性能對比測試
mongo-jdbc是MongoDB的官方開源項目,它可以實現(xiàn)一些簡單的SQL操作,但不支持嵌套查詢、聚合查詢等。該實驗分別通過中間件和mongo-jdbc向非關(guān)系數(shù)據(jù)庫MongoDB中插入數(shù)據(jù),比較兩者的性能。
圖9比較了使用中間件和mongo-jdbc在執(zhí)行插入時的性能。mongo-jdbc相比于中間件大約有150 ms的平均延遲,使用中間件比mongo-jdbc有顯著的性能提高且支持Group by等復(fù)雜查詢,在功能和性能上都優(yōu)于mongo-jdbc,進(jìn)一步證明了該中間件系統(tǒng)的優(yōu)勢。
圖9 mongo-jdbc與中間件插入數(shù)據(jù)時間對比
3.2.3 關(guān)系數(shù)據(jù)庫加解密測試
實驗主要測試中間件系統(tǒng)對明文數(shù)據(jù)的加密情況,數(shù)據(jù)集選用美國勞工部統(tǒng)計局官方發(fā)布的數(shù)據(jù)。測試分兩種情況:第一種創(chuàng)建表中的字段為10個int型,每張表的數(shù)據(jù)量為1 000;第二種創(chuàng)建表中的字段為10個varchar型,每張表的數(shù)據(jù)量也為1 000。將數(shù)據(jù)集對應(yīng)的數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫,執(zhí)行中間件系統(tǒng),明文表整體映射為密文表。
圖10 不同數(shù)據(jù)類型執(zhí)行加密時間對比
圖10描述了中間件對不同類型的明文表執(zhí)行明密文映射的時間消耗。隨著數(shù)據(jù)表數(shù)量的增加,執(zhí)行時間相應(yīng)增加,圖中顯示10個int類型字段的映射速度比varchar類型要慢,這是由于需要對int類型的數(shù)據(jù)進(jìn)行保序和同態(tài)加密,而對varchar類型數(shù)據(jù)只要進(jìn)行確定加密,所以執(zhí)行完成時間比int型少。
關(guān)系數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)庫的集成是大數(shù)據(jù)時代處理數(shù)據(jù)的重要方法,文中提出了一種面向隱私保護(hù)的異構(gòu)數(shù)據(jù)庫集成中間件系統(tǒng)設(shè)計方案,該中間件實現(xiàn)對明文數(shù)據(jù)庫的整體加密以及統(tǒng)一操作密文數(shù)據(jù)庫和NoSQL。與其他中間件系統(tǒng)相比,該系統(tǒng)用SQL語言透明操作關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫,支持增刪改查和Group by等操作,返回統(tǒng)一的關(guān)系數(shù)據(jù)庫格式,提供標(biāo)準(zhǔn)的API,并且關(guān)系數(shù)據(jù)庫采用可搜索加密,保證數(shù)據(jù)的安全性和機(jī)密性,支持用戶直接在密文上執(zhí)行操作。仿真結(jié)果表明,該中間件系統(tǒng)可以完成對關(guān)系數(shù)據(jù)庫的加密,實現(xiàn)SQL統(tǒng)一操作密文數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫,性能損耗在可接受范圍內(nèi)。