A. 好用的數據分析軟體有哪些
1、思邁特軟體Smartbi專注於商業智能(BI)、數據分析軟體產品與服務。B. 資料庫有哪些
目前比較常見的資料庫:
SQL是用於訪問和處理資料庫的標準的計算機語言。
MySQL是小型的開源的關系型資料庫管理系統。
SQL Server 是 Microsoft 開發的關系資料庫管理系統。
Oracle資料庫系統是目前世界上流行的關系資料庫管理系統。
DB2是關系型資料庫平台,其採用多進程多線索的結構,支持多用戶或應用程序在同一條SQL 語句中查詢不同資料庫和數據。
PostgreSQL 是一個對象-關系資料庫伺服器,號稱 "世界上最先進的開源關系型資料庫"。
Hadoop是個很流行的分布式計算解決方案,Hive是基於hadoop的數據倉庫工具,hive 構建在基於靜態批處理的Hadoop 之上。
GreenPlum採用了MPP(大規模並行處理),是一個由多個獨立的資料庫服務組合成關系型資料庫集群。
ECharts 是一個使用 JavaScript 實現的開源可視化庫,涵蓋各行業圖表。
R是一種集統計分析與圖形顯示為一體的統計分析軟體,具有很強的互動性。
python是一種跨平台的計算機程序設計語言,被廣泛用於系統管理任務的處理和Web編程。
目前,這些資料庫都在樹懶學堂有相關教程,可以跟著一步一步學習
C. Hive有哪些支持者和替代品
Apache Hive社區項目的提交者包括Cloudera,Hortonworks,Facebook,Intel,LinkedIn,Databricks等。Hadoop發行版支持Hive。與Hbase NoSQL資料庫一樣,它通常作為Hadoop分布式數據處理應用程序的一部分實現。Hive可從Apache Foundation下載,也可從Hadoop分發商Cloudera,MapR和Hortonworks下載,也可作為AWS Elastic MapRece的一部分下載。後一種實現方式支持在Simple Storage Service對象存儲中的數據集分析。
Apache Hive是首次將SQL查詢功能引入Hadoop生態系統的軟體之一。在眾多其他SQL-on-Hadoop產品中出現的是BigSQL,Drill,Hadapt,Impala和Presto。此外,Apache Pig已經成為面向Hadoop資料庫的HiveQL的替代語言。
D. Hive是什麼,Hive與關系型資料庫的區別
Hive與傳統的關系型資料庫有很多類似的地方,例如對SQL的支持。但是其基於HDFS與MapRece的事實使得它與傳統的資料庫在很多方面有很大的不同,在一些特性的支持下也受到底層架構的限制,但是這些限制隨著版本迭代正在不斷被消除,使得Hive看起來越來越像傳統的資料庫。
E. 四大開源資料庫是哪些
開源世界中的那幾個免費資料庫
發布時間:2011-11-22 09:34:30 來源:CSDN 評論:0 點擊:1476 次 【字型大小:大 中 小】
QQ空間 新浪微博 騰訊微博 人人網 豆瓣網 網路空間 網路搜藏 開心網 復制 更多 0
開源資料庫MySQLMySQL是一個開放源碼的小型關聯式資料庫管理系統,開發者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在Internet上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源...
開源資料庫MySQL
MySQL是一個開放源碼的小型關聯式資料庫管理系統,開發者為瑞典MySQL AB公司。目前MySQL被廣泛地應用在Internet上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。
盤點:開源社區那些免費的資料庫軟體
MySQL為多種編程語言提供了API,包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。而其自身是採用C和C++編寫的,使用了多種編譯器進行測試,所以,MySQL能夠保證源代碼具有很強的可移植性。這樣的一款資料庫,自然能夠支持幾乎所有的操作系統,從Unix、Linux到Windows,具體包括AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多種操作系統。最重要的是,它是一個可以處理擁有上千萬條記錄的大型資料庫。
與此同時,MySQL也產生了很多分支版本的資料庫也非常值得推薦。
首先是MariaDB,它是一個採用Maria存儲引擎的MySQL分支版本,是由原來MySQL的作者 Michael Widenius創辦的公司所開發的免費開源的資料庫伺服器。與MySQL相比較,MariaDB更強的地方在於它擁有更多的引擎,包括Maria存儲引擎、PBXT存儲引擎、XtraDB存儲引擎、FederatedX存儲引擎,它能夠更快的復制查詢處理、運行的速度更快、更好的功能測試以及支持對Unicode的排序等。
其次是rcona,它為MySQL資料庫伺服器進行了改進,在功能和性能上較MySQL有著很顯著的提升。該版本提升了在高負載情況下的InnoDB的性能,同時,它還為DBA提供一些非常有用的性能診斷工具,並且提供很多參數和命令來控制伺服器行為。
第三是Percona Server,它使用了諸如google-mysql-tools、Proven Scaling和 Open Query對MySQL進行改造。並且,它只包含MySQL的伺服器版,並沒有提供相應對 MySQL的Connector和GUI工具進行改進。
非關系型資料庫NoSQL
從NoSQL的字面上理解,NoSQL就是Not Only SQL,被業界認為是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的數據存儲,相對於目前鋪天蓋地的關系型資料庫運用,這一概念無疑是一種全新的思維的注入。
盤點:開源社區那些免費的資料庫軟體
當然,NoSQL也是隨著互聯網Web2.0網站的興起才能取得長足的進步。關鍵的需求在於,傳統的關系資料庫在應付Web2.0網站,特別是超大規模和高並發的SNS類型的web2.0純動態網站顯得力不從心,暴露了很多難以克服的問題,而非關系型的資料庫則由於其本身的特點得到了非常迅速的發展。
首先推薦的是Oracle NoSQL Database,這是一個社區版。Oracle的這個NoSQL Database, 是在10月4號的甲骨文全球大全上發布的Big Data Appliance的其中一個組件,Big Data Appliance是一個集成了Hadoop、NoSQL Database、Oracle資料庫Hadoop適配器、Oracle資料庫Hadoop裝載器及R語言的系統。
其次推薦的是Membase。Membase是NoSQL家族的一個新的重量級的成員。Membase是開源項目,源代碼採用了Apache2.0的使用許可。該項目託管在GitHub.Source tarballs上,目前可以下載beta版本的Linux二進制包。該產品主要是由North Scale的memcached核心團隊成員開發完成,其中還包括Zynga和NHN這兩個主要貢獻者的工程師,這兩個組織都是很大的在線游戲和社區網路空間的供應商。
並且,Membase容易安裝、操作,可以從單節點方便的擴展到集群,而且為memcached(有線協議的兼容性)實現了即插即用功能,在應用方面為開 發者和經營者提供了一個比較低的門檻。做為緩存解決方案,Memcached已經在不同類型的領域(特別是大容量的Web應用)有了廣泛的使用,其中 Memcached的部分基礎代碼被直接應用到了Membase伺服器的前端。通過兼容多種編程語言和框架,Membase具備了很好的復用性。在安裝和配置方面,Membase提供了有效的圖形化界面和編程介面,包括可配置 的告警信息。
Membase的目標是提供對外的線性擴展能力,包括為了增加集群容量,可以針對統一的節點進行復制。 另外,對存儲的數據進行再分配仍然是必要的。
第三推薦的是Hibari。Hibari在日語中意思為「雲雀」,它是一個專為高可靠性和大數據存儲的資料庫引擎,可用於雲計算環境中,例如 webmail、SNS和其他要求T/P級數據存儲的環境中。同時,Hibari也支持Java,C/C++,Python,Ruby和Erlang語言的客戶端。
第四推薦的是memcachedb。這是一個由新浪網的開發人員開放出來的開源項目,給memcached分布式緩存伺服器添加了Berkeley DB的持久化存儲機制和非同步主輔復制機制,讓memcached具備了事務恢復能力、持久化能力和分布式復制能力,非常適合於需要超高性能讀寫速度,但是 不需要嚴格事務約束,能夠被持久化保存的應用場景,例如memcachedb被應用在新浪博客上面。
第五推薦的是Leveldb。這是一個Google實現的非常高效的kv資料庫,目前的版本1.2能夠支持billion級別的數據量了。 在這個數量級別下還有著非常高的性能,主要歸功於它的良好的設計,特別是LSM演算法。LevelDB是單進程的服務,性能非常之高,在一台4個Q6600的CPU機器上,每秒鍾寫數據超過40w,而隨機讀的性能每秒鍾超過10w。
XML資料庫的優勢
XML資料庫是一種支持對XML格式文檔進行存儲和查詢等操作的數據管理系統。在系統中,開發人員可以對資料庫中的XML文檔進行查詢、導出和指定格式的序列化。目前XML資料庫有三種類型:XMLEnabledDatabase(XEDB),即能處理XML的資料庫;NativeXMLDatabase(NXD),即純XML資料庫;HybridXMLDatabase(HXD),即混合XML資料庫。
關系資料庫中的第一代XML支持是切分(或分解)文檔,以適應關系表格或將文檔原封不動地存儲為字元或二進制大對象(CLOB 或 BLOB)。這兩個方法中的任一種都嘗試將XML模型強制轉換成關系模型。然而,這兩種方法在功能和性能上都有很大的局限性。混合型模型將XML存儲在類似於DOM的模型中。XML數據被格式化為緩沖數據頁,以便快速導航和執行查詢以及簡化索引編制。
在這里,首要要推薦的XML資料庫是Sedna。它號稱是一款原生態的XML資料庫,提供了全功能的核心資料庫服務,包括持久化存儲、ACID事務、索引、安全、熱備、UTF8等。實現了 W3C XQuery 規范,支持全文搜索以及節點級別的更新操作。
第二款XML資料庫是BaseX。這款資料庫用來存儲緊縮的XML數據,提供了高效的 XPath和XQuery的實現,同時,它還提供一個前端操作界面。
盤點:開源社區那些免費的資料庫軟體
第三款推薦的是XMLDB。這款資料庫使用了關系型資料庫來存儲任意的XML文檔,因為所採用的存儲機制,所以文檔的搜索速度特別快,同時執行XSL轉換也相當快。XMLDB同時還提供了一個PHP的模塊,可以應用在Web應用中。
第四塊推薦的是X-Hive/DB。它是一個為需要高級XML數據處理和存儲功能的軟體開發者設計的強大的專屬XML資料庫。X-Hive/DB Java API包含存儲、查詢、檢索、轉換和發表XML數據的方法。
與傳統關系型資料庫相比,XML資料庫具有以下優勢:第一,XML資料庫能夠對半結構化數據進行有效的存取和管理。如網頁內容就是一種半結構化數據,而傳統的關系資料庫對於類似網頁內容這類半結構化數據無法進行有效的管理。第二,提供對標簽和路徑的操作。傳統資料庫語言允許對數據元素的值進行操作,不能對元素名稱操作,半結構化資料庫提供了對標簽名稱的操作,還包括了對路徑的操作。第三,當數據本身具有層次特徵時,由於XML數據格式能夠清晰表達數據的層次特徵,因此XML資料庫便於對層次化的數據進行操作。XML資料庫適合管理復雜數據結構的數據集,如果己經以XML格式存儲信息,則XML資料庫利於文檔存儲和檢索;可以用方便實用的方式檢索文檔,並能夠提供高質量的全文搜索引擎。另外XML資料庫能夠存儲和查詢異種的文檔結構,提供對異種信息存取的支持。
F. 程序中的Hive具體是干什麼用的呢
Hive是基於Hadoop平台的數倉工具,具有海量數據存儲、水平可擴展、離線批量處理的優點,解決了傳統關系型數倉不能支持海量數據存儲、水平可擴展性差等問題,但是由於Hive數據存儲和數據處理是依賴於HDFS和MapRece,因此在Hive進行數據離線批量處理時,需將查詢語言先轉換成MR任務,由MR批量處理返回結果,所以Hive沒法滿足數據實時查詢分析的需求。
Hive是由FaceBook研發並開源,當時FaceBook使用Oracle作為數倉,由於數據量越來越大,Oracle數倉性能越來越差,沒法實現海量數據的離線批量分析,因此基於Hadoop研發Hive,並開源給Apacha。
由於Hive不能實現數據實時查詢交互,Hbase可提供實時在線查詢能力,因此Hive和Hbase形成了良性互補。Hbase因為其海量數據存儲、水平擴展、批量數據處理等優點,也得到了廣泛應用。
Pig與HIVE工具類似,都可以用類sql語言對數據進行處理。但是他們應用場景有區別,Pig用於數據倉庫數據的ETL,HIVE用於數倉數據分析。
從架構圖當中,可看出Hive並沒有完成數據的存儲和處理,它是由HDFS完成數據存儲,MR完成數據處理,其只是提供了用戶查詢語言的能力。Hive支持類sql語言,這種SQL稱為Hivesql。用戶可用Hivesql語言查詢,其驅動可將Hivesql語言轉換成MR任務,完成數據處理。
【Hive的訪問介面】
CLI:是hive提供的命令行工具
HWI:是Hive的web訪問介面
JDBC/ODBC:是兩種的標準的應用程序編程訪問介面
Thrift Server:提供異構語言,進行遠程RPC調用Hive的能力。
因此Hiv具備豐富的訪問介面能力,幾乎能滿足各種開發應用場景需求。
【Driver】
是HIVE比較核心的驅動模塊,包含編譯器、優化器、執行器,職責為把用戶輸入的Hivesql轉換成MR數據處理任務
【Metastore】
是HIVE的元數據存儲模塊,數據的訪問和查找,必須要先訪問元數據。Hive中的元數據一般使用單獨的關系型資料庫存儲,常用的是Mysql,為了確保高可用,Mysql元資料庫還需主備部署。
架構圖上面Karmasphere、Hue、Qubole也是訪問HIVE的工具,其中Qubole可遠程訪問HIVE,相當於HIVE作為一種公有雲服務,用戶可通過互聯網訪問Hive服務。
Hive在使用過程中出現了一些不穩定問題,由此發展出了Hive HA機制,
G. 為什麼使用HiveHive提供了什麼Hive支持哪些用戶
為什麼使用Hive?
為什麼使用Hive?那麼,在哪裡使用Hive呢?在載入了60億行(經度、維度、時間、數據值、高度)數據集到MySQL後,系統崩潰了,並經歷過數據丟失。這可能部分是因為我們最初的策略是將所有的數據都存儲到單一的一張表中了。後來,我們調整了策略通過數據集和參數進行分表,這有所幫助但也因此引入了額外的消耗,而這並非是我們願意接受的。
相反,我們決定嘗試使用Apache Hive技術。我們安裝了Hive 0.5 + 20,使用CDHv3和Apache Hadoop(0 20 2 + 320)。CDHv3還包含有許多其他相關工具,包括Sqoop和Hue這些在我們的架構中都標識出來了,如圖23-3底部所示。
我們使用Apache Sqoop轉儲數據到Hive中,然後通過寫一個Apache OODT包裝器,來使Hive按照空間/時間約束查詢數據,然後將結果提供給RCMET和其他用戶(圖23-2中間部分顯示)。RCMES集群的完整的架構如圖23- 3所示。我們有5台機器,包括圖中所示的一個主/從配置,通過一個運行GigE的私人網進行連接。
Hive提供了什麼
Photobucket公司使用Hive的主要目標是為業務功能、系統性能和用戶行為提供答案。為了滿足這些需求,我們每晚都要通過Flume從數百台伺服器上的MySQL資料庫中轉儲來自Web伺服器和自定義格式日誌TB級別的數據。這些數據有助於支持整個公司許多組織,比如行政管理、廣告、客戶支持、產品開發和操作,等等。對於歷史數據,我們保持所有MySQL在每月的第一天創建的所有的數據作為分區數據並保留30天以上的日誌文件。Photobucket使用一個定製的ETL框架來將MySQL資料庫中數據遷移到Hive中。使用Flume將日誌文件數據寫入到HDFS中並按照預定的Hive流程進行處理。
Hive支持的用戶有哪些
行政管理依賴於使用Hadoop提供一般業務健康狀況的報告。Hive允許我們解析結構化資料庫數據和非結構化的點擊流數據,以及業務所涉及的數據格式進行讀取。
廣告業務使用Hive篩選歷史數據來對廣告目標進行預測和定義配額。產品開發無疑是該組織中產生最大數量的特定的查詢的用戶了。對於任何用戶群,時間間隔變化或隨時間而變化。Hive是很重要的,因為它允許我們通過對在當前和歷史數據中運行A / B測試來判斷在一個快速變化的用戶環境中新產品的相關特性。
在Photobucket公司中,為我們的用戶提供一流的系統是最重要的目標。從操作的角度來看,Hive被用來匯總生成跨多個維度的數據。在公司里知道最流行的媒體、用戶、參考域是非常重要的。控制費用對於任何組織都是重要的。一個用戶可以快速消耗大量的系統資源,並顯著增加每月的支出。Hive可以用於識別和分析出這樣的惡意用戶,以確定哪些是符合我們的服務條款,而哪些是不符合的。也可以使用Hive對一些操作運行A / B測試來定義新的硬體需求和生成ROI計算。Hive將用戶從底層MapRece代碼解放出來的能力意味著可以在幾個小時或幾天內就可以獲得答案,而不是之前的數周。
Hive中的資料庫
Hive中資料庫的概念本質上僅僅是表的一個目錄或者命名空間。然而,對於具有很多組和用戶的大集群來說,這是非常有用的,因為這樣可以避免表命名沖突。通常會使用資料庫來將生產表組織成邏輯組。
如果用戶沒有顯式指定資料庫,那麼將會使用默認的資料庫default。
下面這個例子就展示了如何創建一個資料庫:
hive> CREATE DATABASE financials;
如果資料庫financials已經存在的話,那麼將會拋出一個錯誤信息。使用如下語句可以避免在這種情況下拋出錯誤信息:
hive> CREATE DATABASE IF NOT EXISTS financials;
雖然通常情況下用戶還是期望在同名資料庫已經存在的情況下能夠拋出警告信息的,但是IF NOT EXISTS這個子句對於那些在繼續執行之前需要根據需要實時創建資料庫的情況來說是非常有用的。
在所有的資料庫相關的命令中,都可以使用SCHEMA這個關鍵字來替代關鍵字TABLE。
隨時可以通過如下命令方式查看Hive中所包含的資料庫:
hive> SHOW DATABASES;
default
financials
hive> CREATE DATABASE human_resources;
hive> SHOW DATABASES;
default
financials
human_resources
如果資料庫非常多的話,那麼可以使用正則表達式匹配來篩選出需要的資料庫名,正則表達式這個概念,將會在第6.2.3節「Like和RLike」介紹。下面這個例子展示的是列舉出所有以字母h開頭,以其他字元結尾(即.*部分含義)的資料庫名:
hive> SHOW DATABASES LIKE 'h.*';
human_resources
hive> ...
Hive會為每個資料庫創建一個目錄。資料庫中的表將會以這個資料庫目錄的子目錄形式存儲。有一個例外就是default資料庫中的表,因為這個資料庫本身沒有自己的目錄。
資料庫所在的目錄位於屬性hive.metastore.warehouse.dir所指定的頂層目錄之後,這個配置項我們已經在前面的第2.5.1節「本地模式配置」和第2.5.2節「分布式模式和偽分布式模式配置」中進行了介紹。假設用戶使用的是這個配置項默認的配置,也就是/user/hive/warehouse,那麼當我們創建資料庫financials時,Hive將會對應地創建一個目錄/user/hive/warehouse/financials.db。這里請注意,資料庫的文件目錄名是以.db結尾的。
用戶可以通過如下的命令來修改這個默認的位置:
hive> CREATE DATABASE financials
> LOCATION '/my/preferred/directory';
用戶也可以為這個資料庫增加一個描述信息,這樣通過DESCRIBE DATABASE <database> 命令就可以查看到該信息。
hive> CREATE DATABASE financials
> COMMENT 'Holds all financial tables';
hive> DESCRIBE DATABASE financials;
financials Holds all financial tables
hdfs://master-server/user/hive/warehouse/financials.db
從上面的例子中,我們可以注意到,DESCRIEB DATABASE語句也會顯示出這個資料庫所在的文件目錄位置路徑。在這個例子中,URI格式是hdfs。如果安裝的是MapR,那麼這里就應該是maprfs。對於亞馬遜彈性MapRece(EMR)集群,這里應該是hdfs,但是用戶可以設置hive.metastore.warehouse.dir為亞馬遜S3特定的格式(例如,屬性值設置為s3n://bucketname...)。用戶可以使用s3作為模式,但是如果使用新版的規則s3n會更好。
前面DESCRIBE DATABASE語句的輸出中,我們使用了master-server來代表URI許可權,也就是說應該是由文件系統的「主節點」(例如,HDFS中運行NameNode服務的那台伺服器)的伺服器名加上一個可選的埠號構成的(例如,伺服器名:埠號這樣的格式)。如果用戶執行的是偽分布式模式,那麼主節點伺服器名稱就應該是localhost。對於本地模式,這個路徑應該是一個本地路徑,例如file:///user/hive/warehouse/financials.db。
如果這部分信息省略了,那麼Hive將會使用Hadoop配置文件中的配置項fs.default.name作為master-server所對應的伺服器名和埠號,這個配置文件可以在$HADOOP_HOME/conf這個目錄下找到。
需要明確的是,hdfs:///user/hive/warehouse/financials.db和hdfs://master-server/user/hive/
warehouse/financials.db是等價的,其中master-server是主節點的DNS名和可選的埠號。
為了保持完整性,當用戶指定一個相對路徑(例如,some/relative/path)時,對於HDFS和Hive,都會將這個相對路徑放到分布式文件系統的指定根目錄下(例如,hdfs:///user/<user-name>)。然而,如果用戶是在本地模式下執行的話,那麼當前的本地工作目錄將是some/relative/path的父目錄。
為了腳本的可移植性,通常會省略掉那個伺服器和埠號信息,而只有在涉及到另一個分布式文件系統實例(包括S3存儲)的時候才會指明該信息。
此外,用戶還可以為資料庫增加一些和其相關的鍵-值對屬性信息,盡管目前僅有的功能就是提供了一種可以通過DESCRIBE DATABASE EXTENDED <database>語句顯示出這些信息的方式:
hive> CREATE DATABASE financials
> WITH DBPROPERTIES ('creator' = 'Mark Moneybags', 'date' = '2012-01-02');
hive> DESCRIBE DATABASE financials;
financials hdfs://master-server/user/hive/warehouse/financials.db
hive> DESCRIBE DATABASE EXTENDED financials;
financials hdfs://master-server/user/hive/warehouse/financials.db
{date=2012-01-02, creator=Mark Moneybags);
USE命令用於將某個資料庫設置為用戶當前的工作資料庫,和在文件系統中切換工作目錄是一個概念:
hive> USE financials;
現在,使用像SHOW TABLES這樣的命令就會顯示當前這個資料庫下所有的表。
不幸的是,並沒有一個命令可以讓用戶查看當前所在的是哪個資料庫!幸運的是,在Hive中是可以重復使用USE…命令的,這是因為在Hive中並沒有嵌套資料庫的概念。
可以回想下,在第2.7.2節「變數和屬性」中提到過,可以通過設置一個屬性值來在提示符裡面顯示當前所在的資料庫(Hive v0.8.0版本以及之後的版本才支持此功能):
hive> set hive.cli.print.current.db=true;
hive (financials)> USE default;
hive (default)> set hive.cli.print.current.db=false;
hive> ...
最後,用戶可以刪除資料庫:
hive> DROP DATABASE IF EXISTS financials;
IF EXISTS子句是可選的,如果加了這個子句,就可以避免因資料庫finanacials不存在而拋出警告信息。
默認情況下,Hive是不允許用戶刪除一個包含有表的資料庫的。用戶要麼先刪除資料庫中的表,然後再刪除資料庫;要麼在刪除命令的最後面加上關鍵字CASCADE,這樣可以使Hive自行先刪除資料庫中的表:
hive> DROP DATABASE IF EXISTS financials CASCADE;
如果使用的是RESTRICT這個關鍵字而不是CASCADE這個關鍵字的話,那麼就和默認情況一樣,也就是,如果想刪除資料庫,那麼必須先要刪除掉該資料庫中的所有表。
如果某個資料庫被刪除了,那麼其對應的目錄也同時會被刪除。