數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化_第1頁
數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化_第2頁
數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化_第3頁
數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化_第4頁
數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化1數(shù)據(jù)倉庫基礎(chǔ)1.1數(shù)據(jù)倉庫的概念數(shù)據(jù)倉庫(DataWarehouse)是一種用于存儲和管理大量數(shù)據(jù)的系統(tǒng),主要用于支持業(yè)務(wù)智能(BusinessIntelligence,BI)活動,特別是分析性報告和決策支持。數(shù)據(jù)倉庫的設(shè)計目的是為了提供對歷史數(shù)據(jù)的快速訪問,而不僅僅是存儲數(shù)據(jù)。它通常包含從多個源系統(tǒng)抽取、清洗、轉(zhuǎn)換和加載(ETL)的數(shù)據(jù),這些數(shù)據(jù)被組織成適合分析的格式,如星型模式或雪花模式。數(shù)據(jù)倉庫的關(guān)鍵特性包括:-集成性:數(shù)據(jù)倉庫中的數(shù)據(jù)是從多個源系統(tǒng)抽取并整合的,確保數(shù)據(jù)的一致性和完整性。-時間性:數(shù)據(jù)倉庫存儲的是歷史數(shù)據(jù),用于分析過去的數(shù)據(jù)趨勢。-穩(wěn)定性:一旦數(shù)據(jù)進入數(shù)據(jù)倉庫,通常不會被修改或刪除,以保持數(shù)據(jù)的歷史準確性。-面向主題:數(shù)據(jù)倉庫中的數(shù)據(jù)是圍繞特定主題組織的,如銷售、客戶、產(chǎn)品等。1.2Redshift在數(shù)據(jù)倉庫中的角色AmazonRedshift是亞馬遜網(wǎng)絡(luò)服務(wù)(AWS)提供的一種完全托管的、高性能的數(shù)據(jù)倉庫服務(wù)。它基于列式存儲技術(shù),專為處理大規(guī)模數(shù)據(jù)集和復(fù)雜查詢而設(shè)計,非常適合數(shù)據(jù)倉庫的場景。Redshift通過以下方式在數(shù)據(jù)倉庫中發(fā)揮作用:1.2.1列式存儲Redshift使用列式存儲,這意味著數(shù)據(jù)按列而不是按行存儲。這種存儲方式在處理大量數(shù)據(jù)時特別有效,因為查詢通常只涉及數(shù)據(jù)集的一小部分列,列式存儲可以減少讀取不必要的數(shù)據(jù),從而提高查詢性能。1.2.2數(shù)據(jù)壓縮Redshift提供了多種數(shù)據(jù)壓縮編碼,如LZO、ZSTD、BYTEDICT等,這些編碼可以顯著減少存儲空間,同時提高查詢速度。數(shù)據(jù)壓縮是通過選擇合適的編碼類型來實現(xiàn)的,不同的數(shù)據(jù)類型和數(shù)據(jù)分布適合不同的壓縮編碼。1.2.3分區(qū)和排序為了進一步優(yōu)化查詢性能,Redshift支持數(shù)據(jù)分區(qū)和排序。數(shù)據(jù)分區(qū)可以將數(shù)據(jù)分成更小、更易于管理的塊,而排序則可以確保數(shù)據(jù)在磁盤上以查詢友好的方式存儲,從而減少查詢時的數(shù)據(jù)掃描量。1.2.4并行處理Redshift是一個大規(guī)模并行處理(MPP)數(shù)據(jù)庫,這意味著它可以將查詢并行地分發(fā)到多個節(jié)點上執(zhí)行,從而大大提高了處理大規(guī)模數(shù)據(jù)集的能力。1.2.5云托管服務(wù)作為AWS的一項服務(wù),Redshift提供了高可用性和彈性,可以根據(jù)需要自動擴展或縮減資源,同時AWS負責(zé)所有基礎(chǔ)設(shè)施的維護和管理,減輕了用戶的運維負擔。1.2.6示例:數(shù)據(jù)壓縮編碼的選擇假設(shè)我們有一個銷售數(shù)據(jù)表,其中包含以下列:-sale_id:銷售記錄的唯一標識符。-product_id:產(chǎn)品標識符。-sale_date:銷售日期。-quantity:銷售數(shù)量。-price:銷售價格。-customer_id:客戶標識符。我們可以使用以下SQL語句來創(chuàng)建這個表,并選擇合適的壓縮編碼:CREATETABLEsales(

sale_idINTENCODEAZ64,

product_idINTENCODEAZ64,

sale_dateDATEENCODElzo,

quantitySMALLINTENCODEAZ64,

priceDECIMAL(10,2)ENCODEzstd,

customer_idINTENCODEAZ64

);在這個例子中:-sale_id、product_id、quantity和customer_id列使用了AZ64編碼,這是一種適用于整數(shù)類型數(shù)據(jù)的高效編碼,可以提供良好的壓縮比和查詢性能。-sale_date列使用了LZO編碼,這是一種適用于日期類型數(shù)據(jù)的編碼,可以快速壓縮和解壓縮日期數(shù)據(jù)。-price列使用了ZSTD編碼,這是一種適用于浮點數(shù)類型數(shù)據(jù)的編碼,提供了比其他編碼更好的壓縮比,同時保持了較高的查詢速度。通過選擇合適的壓縮編碼,我們可以在Redshift中有效地存儲和查詢銷售數(shù)據(jù),同時節(jié)省存儲空間和提高查詢性能。2數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化2.1Redshift壓縮編碼介紹在AmazonRedshift中,數(shù)據(jù)壓縮是提高存儲效率和查詢性能的關(guān)鍵技術(shù)。Redshift使用列式存儲,這意味著每一列的數(shù)據(jù)可以獨立地進行壓縮,從而在存儲和查詢時節(jié)省空間和時間。Redshift提供了多種壓縮編碼,每種編碼都有其特定的適用場景和優(yōu)勢。2.1.1壓縮編碼類型無壓縮(NO_COMPRESS):不進行任何壓縮,適用于頻繁更新的列。字典編碼(DICT):通過創(chuàng)建一個值的列表(字典)來替換重復(fù)的值,適用于具有重復(fù)值的列。運行長度編碼(RLE):將連續(xù)的相同值編碼為一個值和一個計數(shù),適用于具有長序列相同值的列。前綴編碼(PREFIX):壓縮具有相同前綴的字符串,適用于字符串數(shù)據(jù)。直接編碼(DIRECT):將數(shù)據(jù)直接編碼為更緊湊的格式,適用于數(shù)值數(shù)據(jù)。直接編碼前綴(DIRECT_PATH):結(jié)合了DIRECT和PREFIX編碼,適用于數(shù)值和字符串數(shù)據(jù)。LZO編碼:使用LZO算法進行壓縮,適用于大型文本數(shù)據(jù)。ZSTD編碼:使用Zstandard算法進行壓縮,提供更高的壓縮比和更快的壓縮/解壓縮速度。2.2選擇合適的壓縮編碼選擇正確的壓縮編碼對于優(yōu)化Redshift的存儲和查詢性能至關(guān)重要。以下是一些選擇壓縮編碼的指導(dǎo)原則:對于頻繁更新的列,使用NO_COMPRESS,以避免在更新時的額外壓縮和解壓縮開銷。對于具有重復(fù)值的列,如狀態(tài)代碼或類別,使用DICT編碼可以顯著減少存儲空間。對于連續(xù)相同值的列,如日期或時間戳,RLE編碼是理想的選擇。對于字符串數(shù)據(jù),如果字符串有共同的前綴,使用PREFIX編碼;如果字符串數(shù)據(jù)量大,可以考慮使用LZO或ZSTD編碼。對于數(shù)值數(shù)據(jù),DIRECT編碼通常是一個好的選擇,因為它可以將數(shù)據(jù)編碼為更緊湊的格式。2.2.1示例:選擇壓縮編碼假設(shè)我們有一個銷售數(shù)據(jù)表sales,其中包含以下列:sale_id:銷售記錄的唯一標識符。product_id:產(chǎn)品標識符。sale_date:銷售日期。quantity:銷售數(shù)量。price:銷售價格。region:銷售地區(qū)。對于product_id和region列,由于它們包含重復(fù)的值,我們可以使用DICT編碼。對于sale_date列,由于它可能包含連續(xù)的日期,RLE編碼是一個好選擇。對于quantity和price列,我們可以使用DIRECT編碼,因為它們是數(shù)值數(shù)據(jù)。sale_id列由于頻繁更新,我們選擇NO_COMPRESS編碼。2.3壓縮編碼的實際應(yīng)用在Redshift中,我們可以在創(chuàng)建表或修改表時指定列的壓縮編碼。下面是如何在創(chuàng)建表時指定壓縮編碼的示例:CREATETABLEsales(

sale_idINTENCODENO_COMPRESS,

product_idINTENCODEDICT,

sale_dateDATEENCODERLE,

quantityINTENCODEDIRECT,

priceDECIMAL(10,2)ENCODEDIRECT,

regionVARCHAR(50)ENCODEDICT

);2.3.1示例:修改表的壓縮編碼如果我們想要修改現(xiàn)有表sales中product_id列的壓縮編碼,可以使用以下SQL語句:ALTERTABLEsalesALTERCOLUMNproduct_idSETENCODEDICT;2.3.2示例:查詢壓縮編碼要查看表中各列的當前壓縮編碼,可以使用以下查詢:SELECT

column_name,

encoding

FROM

svv_columns

WHERE

table_name='sales';這將返回sales表中所有列的名稱和它們當前的壓縮編碼。通過合理選擇和應(yīng)用壓縮編碼,我們可以顯著提高Redshift數(shù)據(jù)倉庫的存儲效率和查詢性能。在實際應(yīng)用中,應(yīng)根據(jù)數(shù)據(jù)的特性和查詢模式來調(diào)整壓縮策略,以達到最佳效果。3數(shù)據(jù)倉庫:Redshift:存儲優(yōu)化策略3.1數(shù)據(jù)分布與排序在AmazonRedshift中,數(shù)據(jù)分布和排序是優(yōu)化查詢性能的關(guān)鍵策略。Redshift是一個列式存儲的MPP(大規(guī)模并行處理)數(shù)據(jù)庫,這意味著數(shù)據(jù)如何在節(jié)點間分布以及如何在磁盤上排序,直接影響到查詢的執(zhí)行效率。3.1.1數(shù)據(jù)分布數(shù)據(jù)分布策略決定了數(shù)據(jù)如何在Redshift的多個節(jié)點上存儲。Redshift提供了以下幾種數(shù)據(jù)分布策略:KeyDistribution:基于一個或多個列的值進行哈希分布,適合于經(jīng)常需要根據(jù)這些列進行JOIN操作的表。AllDistribution:將數(shù)據(jù)的完整副本存儲在每個節(jié)點上,適用于小表或經(jīng)常需要全表掃描的表。EvenDistribution:數(shù)據(jù)均勻分布,不依賴于特定列的值,適用于不需要JOIN操作的大表。3.1.1.1示例:使用KeyDistributionCREATETABLEsales(

sale_idINTNOTNULL,

product_idINTNOTNULL,

sale_dateDATENOTNULL,

sale_amountDECIMAL(10,2)NOTNULL

)DISTSTYLEKEYDISTKEY(product_id);在這個例子中,sales表使用product_id作為分布鍵,這意味著數(shù)據(jù)將根據(jù)product_id的值在節(jié)點間進行哈希分布。這在進行基于product_id的JOIN操作時,可以顯著提高查詢性能。3.1.2數(shù)據(jù)排序數(shù)據(jù)排序策略決定了數(shù)據(jù)在磁盤上的物理排序方式。Redshift提供了SORTKEY,用于指定表中數(shù)據(jù)的排序列。3.1.2.1示例:使用SORTKEYCREATETABLEsales(

sale_idINTNOTNULL,

product_idINTNOTNULL,

sale_dateDATENOTNULL,

sale_amountDECIMAL(10,2)NOTNULL

)SORTKEY(sale_date);在這個例子中,sales表的數(shù)據(jù)將按照sale_date列的值進行排序。這在進行時間序列分析或基于日期的查詢時,可以提高查詢速度。3.2表設(shè)計優(yōu)化Redshift的表設(shè)計對性能有重大影響。以下是一些優(yōu)化表設(shè)計的策略:分區(qū)表:通過將大表分區(qū),可以減少查詢時需要掃描的數(shù)據(jù)量。壓縮編碼:選擇合適的壓縮編碼可以減少存儲空間,同時提高查詢性能。避免頻繁更新:Redshift優(yōu)化了讀取性能,頻繁的更新操作會降低性能。3.2.1示例:創(chuàng)建分區(qū)表CREATETABLEsales(

sale_idINTNOTNULL,

product_idINTNOTNULL,

sale_dateDATENOTNULL,

sale_amountDECIMAL(10,2)NOTNULL

)PARTITIONBYRANGE(sale_date);

CREATETABLEsales_y2020PARTITIONOFsales

FORVALUESFROM('2020-01-01')TO('2021-01-01');

CREATETABLEsales_y2021PARTITIONOFsales

FORVALUESFROM('2021-01-01')TO('2022-01-01');在這個例子中,sales表被設(shè)計為一個范圍分區(qū)表,根據(jù)sale_date列的值進行分區(qū)。這可以顯著減少查詢時需要掃描的數(shù)據(jù)量,特別是在查詢特定年份的銷售數(shù)據(jù)時。3.3列存儲與行存儲的比較Redshift使用列存儲,這與傳統(tǒng)的行存儲數(shù)據(jù)庫不同。列存儲在處理大量數(shù)據(jù)時,特別是在進行聚合和分析查詢時,提供了更好的性能。這是因為列存儲可以只讀取查詢中需要的列,而行存儲則需要讀取整行數(shù)據(jù),即使查詢只需要其中的一列。3.3.1列存儲的優(yōu)勢減少I/O操作:只讀取查詢中需要的列,減少了磁盤I/O。提高壓縮效率:列存儲可以對每一列進行獨立的壓縮,通??梢赃_到更高的壓縮比。加速聚合查詢:列存儲在進行聚合操作時,可以直接跳過不需要的列,提高查詢速度。3.3.2行存儲的適用場景盡管列存儲在數(shù)據(jù)分析場景下表現(xiàn)優(yōu)異,但在某些情況下,行存儲可能更合適:頻繁的插入和更新操作:行存儲在處理頻繁的寫操作時,通常比列存儲更高效。需要讀取整行數(shù)據(jù)的查詢:如果查詢經(jīng)常需要讀取表中的所有列,行存儲可能是一個更好的選擇。通過理解數(shù)據(jù)分布、排序以及表設(shè)計的優(yōu)化策略,可以顯著提高AmazonRedshift中數(shù)據(jù)倉庫的性能和效率。同時,根據(jù)查詢模式和數(shù)據(jù)特性選擇合適的存儲方式,也是優(yōu)化數(shù)據(jù)倉庫性能的重要一環(huán)。4數(shù)據(jù)倉庫:Redshift:查詢性能提升4.1使用壓縮提高查詢速度在AmazonRedshift中,數(shù)據(jù)壓縮是提升查詢性能的關(guān)鍵策略之一。Redshift使用列式存儲,這意味著數(shù)據(jù)按列存儲,而不是按行存儲。這種存儲方式非常適合數(shù)據(jù)壓縮,因為列式存儲允許Redshift在壓縮時考慮整個列的數(shù)據(jù)分布,從而實現(xiàn)更高效的壓縮比率。4.1.1原理Redshift提供了多種壓縮編碼,每種編碼針對不同類型的數(shù)據(jù)和查詢模式進行了優(yōu)化。例如,LZO編碼非常適合壓縮文本數(shù)據(jù),而ZSTD編碼則在提供更高壓縮比率的同時,保持較快的解壓縮速度。選擇正確的壓縮編碼可以顯著減少存儲空間,同時加速查詢執(zhí)行,因為Redshift可以跳過解壓縮無關(guān)列的過程。4.1.2示例假設(shè)我們有一個銷售數(shù)據(jù)表sales,其中包含product_id、sale_date、quantity和price等列。我們可以使用以下SQL語句來創(chuàng)建這個表,并為不同的列選擇不同的壓縮編碼:CREATETABLEsales(

product_idintENCODEaz64,

sale_datedateENCODElzo,

quantityintENCODEint2,

pricenumericENCODEzstd

);在這個例子中:-product_id使用az64編碼,適用于整數(shù)類型,可以提供較高的壓縮比率。-sale_date使用lzo編碼,適用于日期類型,可以快速解壓縮。-quantity使用int2編碼,適用于小整數(shù),可以節(jié)省存儲空間。-price使用ZSTD編碼,適用于數(shù)值類型,提供高壓縮比率和較快的解壓縮速度。4.2存儲優(yōu)化對查詢性能的影響除了數(shù)據(jù)壓縮,存儲優(yōu)化也是提升Redshift查詢性能的重要方面。這包括數(shù)據(jù)分布、排序鍵和數(shù)據(jù)傾斜的管理。4.2.1原理數(shù)據(jù)分布:Redshift使用數(shù)據(jù)分布來決定數(shù)據(jù)如何在集群中的不同節(jié)點上分布。選擇正確的分布鍵可以確保數(shù)據(jù)在節(jié)點間均勻分布,從而加速查詢。排序鍵:排序鍵用于在數(shù)據(jù)加載時對數(shù)據(jù)進行排序,這可以減少查詢時的數(shù)據(jù)掃描量,尤其是對于范圍查詢和排序查詢。數(shù)據(jù)傾斜:數(shù)據(jù)傾斜是指數(shù)據(jù)在節(jié)點間分布不均,這可能導(dǎo)致某些節(jié)點處理的數(shù)據(jù)量遠大于其他節(jié)點,從而影響查詢性能。通過調(diào)整分布鍵和排序鍵,可以減少數(shù)據(jù)傾斜。4.2.2示例假設(shè)我們有一個客戶數(shù)據(jù)表customers,其中包含customer_id、first_name、last_name和email等列。我們可以使用以下SQL語句來創(chuàng)建這個表,并指定分布鍵和排序鍵:CREATETABLEcustomers(

customer_idintNOTNULL,

first_namevarchar(50),

last_namevarchar(50),

emailvarchar(100)

)

DISTSTYLEKEY

DISTKEY(customer_id)

SORTKEY(customer_id);在這個例子中:-customer_id被用作分布鍵和排序鍵,這確保了數(shù)據(jù)在節(jié)點間均勻分布,并且在查詢時可以快速定位到特定的客戶記錄。4.3最佳實踐:查詢與存儲優(yōu)化結(jié)合結(jié)合使用數(shù)據(jù)壓縮和存儲優(yōu)化可以最大化Redshift的查詢性能。以下是一些最佳實踐:選擇合適的壓縮編碼:根據(jù)列的數(shù)據(jù)類型和查詢模式選擇最合適的壓縮編碼。使用分布鍵和排序鍵:確保數(shù)據(jù)在節(jié)點間均勻分布,并且可以快速定位到查詢所需的數(shù)據(jù)。定期分析和重分布表:使用ANALYZE和VACUUM命令來更新統(tǒng)計信息和優(yōu)化數(shù)據(jù)分布。避免全表掃描:盡量使用索引和分布鍵來減少全表掃描的次數(shù),這可以顯著提高查詢速度。4.3.1示例假設(shè)我們有一個訂單數(shù)據(jù)表orders,其中包含order_id、customer_id、order_date和total_amount等列。我們可以使用以下SQL語句來創(chuàng)建這個表,并指定分布鍵和排序鍵:CREATETABLEorders(

order_idintNOTNULL,

customer_idintNOTNULL,

order_datedate,

total_amountnumeric

)

DISTSTYLEKEY

DISTKEY(customer_id)

SORTKEY(order_date,customer_id);然后,我們可以使用以下SQL語句來查詢特定日期范圍內(nèi)特定客戶的訂單總額:SELECTcustomer_id,SUM(total_amount)astotal_sales

FROMorders

WHEREorder_dateBETWEEN'2023-01-01'AND'2023-01-31'

GROUPBYcustomer_id;在這個例子中:-customer_id作為分布鍵,確保了數(shù)據(jù)在節(jié)點間均勻分布。-order_date和customer_id作為排序鍵,可以加速范圍查詢和分組操作。-使用SUM聚合函數(shù)和GROUPBY子句,可以快速計算每個客戶的訂單總額。通過這些策略,我們可以顯著提高Redshift的查詢性能,同時減少存儲成本。5數(shù)據(jù)倉庫:Redshift:Redshift數(shù)據(jù)壓縮與存儲優(yōu)化案例分析5.1Redshift壓縮與存儲優(yōu)化的實際案例5.1.1案例背景在一家大型零售公司中,數(shù)據(jù)倉庫(Redshift)用于存儲和分析銷售數(shù)據(jù)。隨著業(yè)務(wù)的增長,數(shù)據(jù)量急劇增加,導(dǎo)致查詢性能下降,存儲成本上升。為了解決這些問題,公司決定實施Redshift的數(shù)據(jù)壓縮和存儲優(yōu)化策略。5.1.2數(shù)據(jù)描述數(shù)據(jù)集包含以下字段:-order_id:訂單ID-product_id:產(chǎn)品ID-quantity:購買數(shù)量-price:單價-order_date:訂單日期-customer_id:客戶ID-store_id:商店ID5.1.3初始狀態(tài)數(shù)據(jù)以CSV格式導(dǎo)入,沒有進行任何壓縮或優(yōu)化。表結(jié)構(gòu)如下:CREATETABLEsales(

order_idINT,

product_idINT,

quantityINT,

priceDECIMAL(10,2),

order_dateDATE,

customer_idINT,

store_idINT

);5.1.4優(yōu)化步驟5.1.4.1數(shù)據(jù)壓縮Redshift提供了多種壓縮編碼,如LZO、ZSTD等。選擇合適的壓縮編碼可以顯著減少存儲空間,提高查詢速度。例如,對于order_date字段,可以使用LZO編碼,因為它可以有效壓縮日期數(shù)據(jù)。ALTERTABLEsalesALTERCOLUMNorder_dateSETSTORAGECOMPRESS;5.1.4.2選擇合適的分布鍵分布鍵決定了數(shù)據(jù)如何在Redshift的節(jié)點間分布。選擇與查詢模式匹配的分布鍵可以提高查詢性能。在這個案例中,store_id被選為分布鍵,因為大部分查詢都涉及特定商店的銷售數(shù)據(jù)。ALTERTABLEsalesSET(diststyle=key,distkey=store_id);5.1.4.3選擇合適的排序鍵排序鍵決定了數(shù)據(jù)在磁盤上的物理排序方式。選擇與查詢模式匹配的排序鍵可以減少查詢時的數(shù)據(jù)掃描量。在這個案例中,order_date被選為排序鍵,因為查詢經(jīng)常涉及時間范圍。ALTERTABLEsalesSET(sortkey=order_date);5.1.4.4數(shù)據(jù)分區(qū)對于大表,使用分區(qū)可以進一步提高查詢性能。在這個案例中,數(shù)據(jù)按照order_date進行分區(qū),每個月的數(shù)據(jù)存儲在一個分區(qū)中。CREATETABLEsales(

order_idINT,

product_idINT,

quantityINT,

priceDECIMAL(10,2),

order_dateDATE,

customer_idINT,

store_idINT,

PRIMARYKEY(order_id),

CONSTRAINTsales_date_partitionCHECK(order_date>='2020-01-01'ANDorder_date<'2023-01-01')

)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論