一、概念

發(fā)展壯大離不開廣大客戶長(zhǎng)期以來(lái)的信賴與支持,我們將始終秉承“誠(chéng)信為本、服務(wù)至上”的服務(wù)理念,堅(jiān)持“二合一”的優(yōu)良服務(wù)模式,真誠(chéng)服務(wù)每家企業(yè),認(rèn)真做好每個(gè)細(xì)節(jié),不斷完善自我,成就企業(yè),實(shí)現(xiàn)共贏。行業(yè)涉及成都資質(zhì)代辦等,在網(wǎng)站建設(shè)公司、全網(wǎng)整合營(yíng)銷推廣、WAP手機(jī)網(wǎng)站、VI設(shè)計(jì)、軟件開發(fā)等項(xiàng)目上具有豐富的設(shè)計(jì)經(jīng)驗(yàn)。
SQL?(Structured?Query?Language)?數(shù)據(jù)庫(kù),指關(guān)系型數(shù)據(jù)庫(kù)。主要代表:SQL?Server,Oracle,MySQL(開源),PostgreSQL(開源)。
NoSQL(Not?Only?SQL)泛指非關(guān)系型數(shù)據(jù)庫(kù)。主要代表:MongoDB,Redis,CouchDB。
二、區(qū)別
1、存儲(chǔ)方式
SQL數(shù)據(jù)存在特定結(jié)構(gòu)的表中;而NoSQL則更加靈活和可擴(kuò)展,存儲(chǔ)方式可以省是JSON文檔、哈希表或者其他方式。SQL通常以數(shù)據(jù)庫(kù)表形式存儲(chǔ)數(shù)據(jù)。舉個(gè)栗子,存?zhèn)€學(xué)生借書數(shù)據(jù):
而NoSQL存儲(chǔ)方式比較靈活,比如使用類JSON文件存儲(chǔ)上表中熊大的借閱數(shù)據(jù):
2、表/數(shù)據(jù)集合的數(shù)據(jù)的關(guān)系
在SQL中,必須定義好表和字段結(jié)構(gòu)后才能添加數(shù)據(jù),例如定義表的主鍵(primary?key),索引(index),觸發(fā)器(trigger),存儲(chǔ)過程(stored?procedure)等。表結(jié)構(gòu)可以在被定義之后更新,但是如果有比較大的結(jié)構(gòu)變更的話就會(huì)變得比較復(fù)雜。在NoSQL中,數(shù)據(jù)可以在任何時(shí)候任何地方添加,不需要先定義表。例如下面這段代碼會(huì)自動(dòng)創(chuàng)建一個(gè)新的"借閱表"數(shù)據(jù)集合:
NoSQL也可以在數(shù)據(jù)集中建立索引。以MongoDB為例,會(huì)自動(dòng)在數(shù)據(jù)集合創(chuàng)建后創(chuàng)建唯一值_id字段,這樣的話就可以在數(shù)據(jù)集創(chuàng)建后增加索引。
從這點(diǎn)來(lái)看,NoSQL可能更加適合初始化數(shù)據(jù)還不明確或者未定的項(xiàng)目中。
3、外部數(shù)據(jù)存儲(chǔ)
SQL中如何需要增加外部關(guān)聯(lián)數(shù)據(jù)的話,規(guī)范化做法是在原表中增加一個(gè)外鍵,關(guān)聯(lián)外部數(shù)據(jù)表。例如需要在借閱表中增加審核人信息,先建立一個(gè)審核人表:
再在原來(lái)的借閱人表中增加審核人外鍵:
這樣如果我們需要更新審核人個(gè)人信息的時(shí)候只需要更新審核人表而不需要對(duì)借閱人表做更新。而在NoSQL中除了這種規(guī)范化的外部數(shù)據(jù)表做法以外,我們還能用如下的非規(guī)范化方式把外部數(shù)據(jù)直接放到原數(shù)據(jù)集中,以提高查詢效率。缺點(diǎn)也比較明顯,更新審核人數(shù)據(jù)的時(shí)候?qū)?huì)比較麻煩。
4、SQL中的JOIN查詢
SQL中可以使用JOIN表鏈接方式將多個(gè)關(guān)系數(shù)據(jù)表中的數(shù)據(jù)用一條簡(jiǎn)單的查詢語(yǔ)句查詢出來(lái)。NoSQL暫未提供類似JOIN的查詢方式對(duì)多個(gè)數(shù)據(jù)集中的數(shù)據(jù)做查詢。所以大部分NoSQL使用非規(guī)范化的數(shù)據(jù)存儲(chǔ)方式存儲(chǔ)數(shù)據(jù)。
5、數(shù)據(jù)耦合性
SQL中不允許刪除已經(jīng)被使用的外部數(shù)據(jù),例如審核人表中的"熊三"已經(jīng)被分配給了借閱人熊大,那么在審核人表中將不允許刪除熊三這條數(shù)據(jù),以保證數(shù)據(jù)完整性。而NoSQL中則沒有這種強(qiáng)耦合的概念,可以隨時(shí)刪除任何數(shù)據(jù)。
6、事務(wù)
SQL中如果多張表數(shù)據(jù)需要同批次被更新,即如果其中一張表更新失敗的話其他表也不能更新成功。這種場(chǎng)景可以通過事務(wù)來(lái)控制,可以在所有命令完成后再統(tǒng)一提交事務(wù)。而NoSQL中沒有事務(wù)這個(gè)概念,每一個(gè)數(shù)據(jù)集的操作都是原子級(jí)的。
7、增刪改查語(yǔ)法
8、查詢性能
在相同水平的系統(tǒng)設(shè)計(jì)的前提下,因?yàn)镹oSQL中省略了JOIN查詢的消耗,故理論上性能上是優(yōu)于SQL的。
NoSQL太火,冒出太多產(chǎn)品了,保守估計(jì)也成百上千了。
互聯(lián)網(wǎng)公司常用的基本集中在以下幾種,每種只舉一個(gè)比較常見或者應(yīng)用比較成功的例子吧。
1. In-Memory KV Store : Redis
in memory key-value store,同時(shí)提供了更加豐富的數(shù)據(jù)結(jié)構(gòu)和運(yùn)算的能力,成功用法是替代memcached,通過checkpoint和commit log提供了快速的宕機(jī)恢復(fù),同時(shí)支持replication提供讀可擴(kuò)展和高可用。
2. Disk-Based KV Store: Leveldb
真正基于磁盤的key-value storage, 模型單一簡(jiǎn)單,數(shù)據(jù)量不受限于內(nèi)存大小,數(shù)據(jù)落盤高可靠,Google的幾位大神出品的精品,LSM模型天然寫優(yōu)化,順序?qū)懕P的方式對(duì)于新硬件ssd再適合不過了,不足是僅提供了一個(gè)庫(kù),需要自己封裝server端。
3. Document Store: Mongodb
分布式nosql,具備了區(qū)別mysql的最大亮點(diǎn):可擴(kuò)展性。mongodb 最新引人的莫過于提供了sql接口,是目前nosql里最像mysql的,只是沒有ACID的特性,發(fā)展很快,支持了索引等特性,上手容易,對(duì)于數(shù)據(jù)量遠(yuǎn)超內(nèi)存限制的場(chǎng)景來(lái)說,還需要慎重。
4. Column Table Store: HBase
這個(gè)富二代似乎不用贅述了,最大的優(yōu)勢(shì)是開源,對(duì)于普通的scan和基于行的get等基本查詢,性能完全不是問題,只是只提供裸的api,易用性上是短板,可擴(kuò)展性方面是最強(qiáng)的,其次坐上了Hadoop的快車,社區(qū)發(fā)展很快,各種基于其上的開源產(chǎn)品不少,來(lái)解決諸如join、聚集運(yùn)算等復(fù)雜查詢。
簡(jiǎn)單說來(lái):sql是關(guān)系型數(shù)據(jù)庫(kù)的結(jié)構(gòu)化查詢語(yǔ)言,而nosql,一般代指菲關(guān)系型數(shù)據(jù)庫(kù),sql語(yǔ)句就不能用來(lái),不過有些有l(wèi)eisql的查詢語(yǔ)言,且nosql數(shù)據(jù)庫(kù)沒有統(tǒng)一的查詢語(yǔ)言。
非關(guān)系型數(shù)據(jù)庫(kù):非關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品是傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的功能閹割版本,通過減少用不到或很少用的功能,來(lái)大幅度提高產(chǎn)品性能。
非關(guān)系型數(shù)據(jù)庫(kù)嚴(yán)格上不是一種數(shù)據(jù)庫(kù),應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)方法的集合。
關(guān)系型數(shù)據(jù)庫(kù):是指采用了關(guān)系模型來(lái)組織數(shù)據(jù)的數(shù)據(jù)庫(kù)。
關(guān)系模型指的就是二維表格模型,而一個(gè)關(guān)系型數(shù)據(jù)庫(kù)就是由二維表及其之間的聯(lián)系所組成的一個(gè)數(shù)據(jù)組織。
可以用SQL語(yǔ)句方便的在一個(gè)表以及多個(gè)表之間做非常復(fù)雜的數(shù)據(jù)查詢。
對(duì)于安全性能很高的數(shù)據(jù)訪問要求可以實(shí)現(xiàn)。
價(jià)格
目前基本上大部分主流的非關(guān)系型數(shù)據(jù)庫(kù)都是免費(fèi)的。而比較有名氣的關(guān)系型數(shù)據(jù)庫(kù),比如Oracle、DB2、MSSQL是收費(fèi)的。雖然Mysql免費(fèi),但它需要做很多工作才能正式用于生產(chǎn)。
功能
實(shí)際開發(fā)中,有很多業(yè)務(wù)需求,其實(shí)并不需要完整的關(guān)系型數(shù)據(jù)庫(kù)功能,非關(guān)系型數(shù)據(jù)庫(kù)的功能就足夠使用了。這種情況下,使用性能更高、成本更低的非關(guān)系型數(shù)據(jù)庫(kù)當(dāng)然是更明智的選擇。
對(duì)于這兩類數(shù)據(jù)庫(kù),對(duì)方的優(yōu)勢(shì)就是自己的弱勢(shì),反之亦然。
Hadoop
文件系統(tǒng):文件系統(tǒng)是用來(lái)存儲(chǔ)和管理文件,并且提供文件的查詢、增加、刪除等操作。
直觀上的體驗(yàn):在shell窗口輸入 ls 命令,就可以看到當(dāng)前目錄下的文件夾、文件。
文件存儲(chǔ)在哪里?硬盤
一臺(tái)只有250G硬盤的電腦,如果需要存儲(chǔ)500G的文件可以怎么辦?先將電腦硬盤擴(kuò)容至少250G,再將文件分割成多塊,放到多塊硬盤上儲(chǔ)存。
通過 hdfs dfs -ls 命令可以查看分布式文件系統(tǒng)中的文件,就像本地的ls命令一樣。
HDFS在客戶端上提供了查詢、新增和刪除的指令,可以實(shí)現(xiàn)將分布在多臺(tái)機(jī)器上的文件系統(tǒng)進(jìn)行統(tǒng)一的管理。
在分布式文件系統(tǒng)中,一個(gè)大文件會(huì)被切分成塊,分別存儲(chǔ)到幾臺(tái)機(jī)器上。結(jié)合上文中提到的那個(gè)存儲(chǔ)500G大文件的那個(gè)例子,這500G的文件會(huì)按照一定的大小被切分成若干塊,然后分別存儲(chǔ)在若干臺(tái)機(jī)器上,然后提供統(tǒng)一的操作接口。
看到這里,不少人可能會(huì)覺得,分布式文件系統(tǒng)不過如此,很簡(jiǎn)單嘛。事實(shí)真的是這樣的么?
潛在問題
假如我有一個(gè)1000臺(tái)機(jī)器組成的分布式系統(tǒng),一臺(tái)機(jī)器每天出現(xiàn)故障的概率是0.1%,那么整個(gè)系統(tǒng)每天出現(xiàn)故障的概率是多大呢?答案是(1-0.1%)^1000=63%,因此需要提供一個(gè)容錯(cuò)機(jī)制來(lái)保證發(fā)生差錯(cuò)時(shí)文件依然可以讀出,這里暫時(shí)先不展開介紹。
如果要存儲(chǔ)PB級(jí)或者EB級(jí)的數(shù)據(jù),成千上萬(wàn)臺(tái)機(jī)器組成的集群是很常見的,所以說分布式系統(tǒng)比單機(jī)系統(tǒng)要復(fù)雜得多呀。
這是一張HDFS的架構(gòu)簡(jiǎn)圖:
client通過nameNode了解數(shù)據(jù)在哪些DataNode上,從而發(fā)起查詢。此外,不僅是查詢文件,寫入文件的時(shí)候也是先去請(qǐng)教N(yùn)ameNode,看看應(yīng)該往哪個(gè)DateNode中去寫。
為了某一份數(shù)據(jù)只寫入到一個(gè)Datanode中,而這個(gè)Datanode因?yàn)槟承┰虺鲥e(cuò)無(wú)法讀取的問題,需要通過冗余備份的方式來(lái)進(jìn)行容錯(cuò)處理。因此,HDFS在寫入一個(gè)數(shù)據(jù)塊的時(shí)候,不會(huì)僅僅寫入一個(gè)DataNode,而是會(huì)寫入到多個(gè)DataNode中,這樣,如果其中一個(gè)DataNode壞了,還可以從其余的DataNode中拿到數(shù)據(jù),保證了數(shù)據(jù)不丟失。
實(shí)際上,每個(gè)數(shù)據(jù)塊在HDFS上都會(huì)保存多份,保存在不同的DataNode上。這種是犧牲一定存儲(chǔ)空間換取可靠性的做法。
接下來(lái)我們來(lái)看一下完整的文件寫入的流程:
大文件要寫入HDFS,client端根據(jù)配置將大文件分成固定大小的塊,然后再上傳到HDFS。
讀取文件的流程:
1、client詢問NameNode,我要讀取某個(gè)路徑下的文件,麻煩告訴我這個(gè)文件都在哪些DataNode上?
2、NameNode回復(fù)client,這個(gè)路徑下的文件被切成了3塊,分別在DataNode1、DataNode3和DataNode4上
3、client去找DataNode1、DataNode3和DataNode4,拿到3個(gè)文件塊,通過stream讀取并且整合起來(lái)
文件寫入的流程:
1、client先將文件分塊,然后詢問NameNode,我要寫入一個(gè)文件到某個(gè)路徑下,文件有3塊,應(yīng)該怎么寫?
2、NameNode回復(fù)client,可以分別寫到DataNode1、DataNode2、DataNode3、DataNode4上,記住,每個(gè)塊重復(fù)寫3份,總共是9份
3、client找到DataNode1、DataNode2、DataNode3、DataNode4,把數(shù)據(jù)寫到他們上面
出于容錯(cuò)的考慮,每個(gè)數(shù)據(jù)塊有3個(gè)備份,但是3個(gè)備份快都直接由client端直接寫入勢(shì)必會(huì)帶來(lái)client端過重的寫入壓力,這個(gè)點(diǎn)是否有更好的解決方案呢?回憶一下mysql主備之間是通過binlog文件進(jìn)行同步的,HDFS當(dāng)然也可以借鑒這個(gè)思想,數(shù)據(jù)其實(shí)只需要寫入到一個(gè)datanode上,然后由datanode之間相互進(jìn)行備份同步,減少了client端的寫入壓力,那么至于是一個(gè)datanode寫入成功即成功,還是需要所有的參與備份的datanode返回寫入成功才算成功,是可靠性配置的策略,當(dāng)然這個(gè)設(shè)置會(huì)影響到數(shù)據(jù)寫入的吞吐率,我們可以看到可靠性和效率永遠(yuǎn)是“魚和熊掌不可兼得”的。
潛在問題
NameNode確實(shí)會(huì)回放editlog,但是不是每次都從頭回放,它會(huì)先加載一個(gè)fsimage,這個(gè)文件是之前某一個(gè)時(shí)刻整個(gè)NameNode的文件元數(shù)據(jù)的內(nèi)存快照,然后再在這個(gè)基礎(chǔ)上回放editlog,完成后,會(huì)清空editlog,再把當(dāng)前文件元數(shù)據(jù)的內(nèi)存狀態(tài)寫入fsimage,方便下一次加載。
這樣,全量回放就變成了增量回放,但是如果NameNode長(zhǎng)時(shí)間未重啟過,editlog依然會(huì)比較大,恢復(fù)的時(shí)間依然比較長(zhǎng),這個(gè)問題怎么解呢?
SecondNameNode是一個(gè)NameNode內(nèi)的定時(shí)任務(wù)線程,它會(huì)定期地將editlog寫入fsimage,然后情況原來(lái)的editlog,從而保證editlog的文件大小維持在一定大小。
NameNode掛了, SecondNameNode并不能替代NameNode,所以如果集群中只有一個(gè)NameNode,它掛了,整個(gè)系統(tǒng)就掛了。hadoop2.x之前,整個(gè)集群只能有一個(gè)NameNode,是有可能發(fā)生單點(diǎn)故障的,所以hadoop1.x有本身的不穩(wěn)定性。但是hadoop2.x之后,我們可以在集群中配置多個(gè)NameNode,就不會(huì)有這個(gè)問題了,但是配置多個(gè)NameNode,需要注意的地方就更多了,系統(tǒng)就更加復(fù)雜了。
俗話說“一山不容二虎”,兩個(gè)NameNode只能有一個(gè)是活躍狀態(tài)active,另一個(gè)是備份狀態(tài)standby,我們看一下兩個(gè)NameNode的架構(gòu)圖。
兩個(gè)NameNode通過JournalNode實(shí)現(xiàn)同步editlog,保持狀態(tài)一致可以相互替換。
因?yàn)閍ctive的NameNode掛了之后,standby的NameNode要馬上接替它,所以它們的數(shù)據(jù)要時(shí)刻保持一致,在寫入數(shù)據(jù)的時(shí)候,兩個(gè)NameNode內(nèi)存中都要記錄數(shù)據(jù)的元信息,并保持一致。這個(gè)JournalNode就是用來(lái)在兩個(gè)NameNode中同步數(shù)據(jù)的,并且standby NameNode實(shí)現(xiàn)了SecondNameNode的功能。
進(jìn)行數(shù)據(jù)同步操作的過程如下:
active NameNode有操作之后,它的editlog會(huì)被記錄到JournalNode中,standby NameNode會(huì)從JournalNode中讀取到變化并進(jìn)行同步,同時(shí)standby NameNode會(huì)監(jiān)聽記錄的變化。這樣做的話就是實(shí)時(shí)同步了,并且standby NameNode就實(shí)現(xiàn)了SecondNameNode的功能。
優(yōu)點(diǎn):
缺點(diǎn):
NoSQL,泛指非關(guān)系型的數(shù)據(jù)庫(kù)。隨著互聯(lián)網(wǎng)web2.0網(wǎng)站的興起,傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)在應(yīng)付web2.0網(wǎng)站,特別是超大規(guī)模和高并發(fā)的SNS類型的web2.0純動(dòng)態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題,而非關(guān)系型的數(shù)據(jù)庫(kù)則由于其本身的特點(diǎn)得到了非常迅速的發(fā)展。NoSQL數(shù)據(jù)庫(kù)的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重?cái)?shù)據(jù)種類帶來(lái)的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題。
雖然NoSQL流行語(yǔ)火起來(lái)才短短一年的時(shí)間,但是不可否認(rèn),現(xiàn)在已經(jīng)開始了第二代運(yùn)動(dòng)。盡管早期的堆棧代碼只能算是一種實(shí)驗(yàn),然而現(xiàn)在的系統(tǒng)已經(jīng)更加的成熟、穩(wěn)定。不過現(xiàn)在也面臨著一個(gè)嚴(yán)酷的事實(shí):技術(shù)越來(lái)越成熟——以至于原來(lái)很好的NoSQL數(shù)據(jù)存儲(chǔ)不得不進(jìn)行重寫,也有少數(shù)人認(rèn)為這就是所謂的2.0版本。這里列出一些比較知名的工具,可以為大數(shù)據(jù)建立快速、可擴(kuò)展的存儲(chǔ)庫(kù)。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項(xiàng)全新的數(shù)據(jù)庫(kù)革命性運(yùn)動(dòng),早期就有人提出,發(fā)展至2009年趨勢(shì)越發(fā)高漲。NoSQL的擁護(hù)者們提倡運(yùn)用非關(guān)系型的數(shù)據(jù)存儲(chǔ),相對(duì)于鋪天蓋地的關(guān)系型數(shù)據(jù)庫(kù)運(yùn)用,這一概念無(wú)疑是一種全新的思維的注入。
對(duì)于NoSQL并沒有一個(gè)明確的范圍和定義,但是他們都普遍存在下面一些共同特征:
不需要預(yù)定義模式:不需要事先定義數(shù)據(jù)模式,預(yù)定義表結(jié)構(gòu)。數(shù)據(jù)中的每條記錄都可能有不同的屬性和格式。當(dāng)插入數(shù)據(jù)時(shí),并不需要預(yù)先定義它們的模式。
無(wú)共享架構(gòu):相對(duì)于將所有數(shù)據(jù)存儲(chǔ)的存儲(chǔ)區(qū)域網(wǎng)絡(luò)中的全共享架構(gòu)。NoSQL往往將數(shù)據(jù)劃分后存儲(chǔ)在各個(gè)本地服務(wù)器上。因?yàn)閺谋镜卮疟P讀取數(shù)據(jù)的性能往往好于通過網(wǎng)絡(luò)傳輸讀取數(shù)據(jù)的性能,從而提高了系統(tǒng)的性能。
彈性可擴(kuò)展:可以在系統(tǒng)運(yùn)行的時(shí)候,動(dòng)態(tài)增加或者刪除結(jié)點(diǎn)。不需要停機(jī)維護(hù),數(shù)據(jù)可以自動(dòng)遷移。
分區(qū):相對(duì)于將數(shù)據(jù)存放于同一個(gè)節(jié)點(diǎn),NoSQL數(shù)據(jù)庫(kù)需要將數(shù)據(jù)進(jìn)行分區(qū),將記錄分散在多個(gè)節(jié)點(diǎn)上面。并且通常分區(qū)的同時(shí)還要做復(fù)制。這樣既提高了并行性能,又能保證沒有單點(diǎn)失效的問題。
異步復(fù)制:和RAID存儲(chǔ)系統(tǒng)不同的是,NoSQL中的復(fù)制,往往是基于日志的異步復(fù)制。這樣,數(shù)據(jù)就可以盡快地寫入一個(gè)節(jié)點(diǎn),而不會(huì)被網(wǎng)絡(luò)傳輸引起遲延。缺點(diǎn)是并不總是能保證一致性,這樣的方式在出現(xiàn)故障的時(shí)候,可能會(huì)丟失少量的數(shù)據(jù)。
BASE:相對(duì)于事務(wù)嚴(yán)格的ACID特性,NoSQL數(shù)據(jù)庫(kù)保證的是BASE特性。BASE是最終一致性和軟事務(wù)。
NoSQL數(shù)據(jù)庫(kù)并沒有一個(gè)統(tǒng)一的架構(gòu),兩種NoSQL數(shù)據(jù)庫(kù)之間的不同,甚至遠(yuǎn)遠(yuǎn)超過兩種關(guān)系型數(shù)據(jù)庫(kù)的不同??梢哉f,NoSQL各有所長(zhǎng),成功的NoSQL必然特別適用于某些場(chǎng)合或者某些應(yīng)用,在這些場(chǎng)合中會(huì)遠(yuǎn)遠(yuǎn)勝過關(guān)系型數(shù)據(jù)庫(kù)和其他的NoSQL。
當(dāng)前標(biāo)題:nosql基本概念,nosql的含義是
網(wǎng)站鏈接:http://chinadenli.net/article16/hddedg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、自適應(yīng)網(wǎng)站、動(dòng)態(tài)網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站改版、網(wǎng)站排名
聲明:本網(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)