A. 什麼是對象存儲
對象存儲的發展歷史: 1999年成立的全球網路存儲工業協會(SNIA)的對象存儲設備(Object Storage Device)工作組發布了ANSI的X3T10標准。 對象存儲的優點: 總體上來講,對象存儲同兼具SAN高速直接訪問磁碟特點及NAS的分布式共享特點。 SAN(Storage Area Network)結構 採用SCSI 塊I/O的命令集,通過在磁碟或FC(Fiber Channel)級的數據訪問提供高性能的隨機I/O和數據吞吐率,它具有高帶寬、低延遲的優勢,在高性能計算中佔有一席之地,如SGI的CXFS文件系統就是基於SAN實現高性能文件存儲的,但是由於SAN系統的價格較高,且可擴展性較差,已不能滿足成千上萬個CPU規模的系統。 來自中國存儲網 ChinaStor.com NAS(Network Attached Storage)結構 它採用NFS或CIFS命令集訪問數據,以文件為傳輸協議,通過TCP/IP實現網路化存儲,可擴展性好、價格便宜、用戶易管理,如目前在集群計算中應用較多的NFS文件系統,但由於NAS的協議開銷高、帶寬低、延遲大,不利於在高性能集群中應用。 對象存儲結構 核心是將數據通路(數據讀或寫)和控制通路(元數據)分離,並且基於對象存儲設備(Object-based Storage Device,OSD)構建存儲系統,每個對象存儲設備具有一定的智能,能夠自動管理其上的數據分布。
B. 簡述android平台提供了哪些數據存儲方法
數據存儲在開發中是使用最頻繁的,Android平台主要有5種實現數據存儲的方式。
第1種: 使用SharedPreferences存儲數據
SharedPreferences是Android平台上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態,一般在Activity中 重載窗口狀態onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常規的Long長 整形、Int整形、String字元串型的保存。
它的本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。
其存儲位置在/data/data/<包名>/shared_prefs目錄下。
SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。
實現SharedPreferences存儲的步驟如下:
一、根據Context獲取SharedPreferences對象
二、利用edit()方法獲取Editor對象。
三、通過Editor對象存儲key-value鍵值對數據。
四、通過commit()方法提交數據。
SharedPreferences對象與sqlite資料庫相比,免去了創建資料庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。所以不論SharedPreferences的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他數據存儲方式。
第2種: 內部文件存儲數據
關於文件存儲,Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
文件可用來存放大量數據,如文本、圖片、音頻等。
默認位置:/data/data/<包>/files/***.***。
openFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符「/」 ,如果文件不存在,Android 會自動創建它。
創建的文件保存在/data/data//files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,通過點擊Eclipse菜單「Window」-「Show View」-「Other」,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data//files目錄就可以看到該文件。
openFileOutput()方法的第二參數用於指定操作模式,有四種模式,分別為:
Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;
MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入: openFileOutput(「itcast.txt」, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,資料庫都應該是私有的(位於/data/data//files),其他程序無法訪問。
除非在創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。 對於私有文件只能被創建該文件的應用訪問,如果希望文件能被其他應用讀和寫,可以在創建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE許可權。
Activity還提供了getCacheDir()和getFilesDir()方法: getCacheDir()方法用於獲取/data/data//cache目錄 getFilesDir()方法用於獲取/data/data//files目錄。
第3種: 外部文件存儲數據
把文件存入SDCard:
使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對於像視頻這樣的大文件,我們可以把它存放在SDCard。
SDCard是干什麼的?你可以把它看作是移動硬碟或U盤。 在模擬器中使用SDCard,你需要先創建一張SDCard卡(當然不是真的SDCard,只是鏡像文件)。
創建SDCard可以在Eclipse創建模擬器時隨同創建,也可以使用DOS命令進行創建,如下: 在Dos窗口中進入android SDK安裝路徑的tools目錄,輸入以下命令創建一張容量為2G的SDCard,文件後綴可以隨便取,建議使用.img: mksdcard 2048M D:\AndroidTool\sdcard.img 在程序中訪問SDCard,你需要申請訪問SDCard的許可權。
在AndroidManifest.xml中加入訪問SDCard的許可權如下:
要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,並且可以進行讀寫。
注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的許可權。
Environment.getExternalStorageState()方法用於獲取SDCard的狀態,如果手機裝有SDCard,並且可以進行讀寫,那麼方法返回的狀態等於Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用於獲取SDCard的目錄,當然要獲取SDCard的目錄,你也可以這樣寫:
第4種: SQLite資料庫存儲數據
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLite.SQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。SQLite 通過利用虛擬機和虛擬資料庫引擎(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
特點:
面向資源有限的設備,
沒有伺服器進程,
所有數據存放在同一文件中跨平台,
可自由復制。
SQLite 基本上符合 SQL-92 標准,和其他的主要 SQL 資料庫沒什麼區別。它的優點就是高效,Android 運行時環境包含了完整的 SQLite。
SQLite 和其他資料庫最大的不同就是對數據類型的支持,創建一個表時,可以在 CREATE TABLE 語句中指定某列的數據類型,但是你可以把任何數據類型放入任何列中。當某個值插入資料庫時,SQLite 將檢查它的類型。如果該類型與關聯的列不匹配,則 SQLite 會嘗試將該值轉換成該列的類型。如果不能轉換,則該值將作為其本身具有的類型存儲。比如可以把一個字元串(String)放入 INTEGER 列。SQLite 稱這為「弱類型」(manifest typing.)。 此外,SQLite 不支持一些標準的 SQL 功能,特別是外鍵約束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 還有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一個完整的 SQL 系統,擁有完整的觸發器,交易等等。
Android 集成了 SQLite 資料庫 Android 在運行時(run-time)集成了 SQLite,所以每個 Android 應用程序都可以使用 SQLite 資料庫。
對於熟悉 SQL 的開發人員來時,在 Android 開發中使用 SQLite 相當簡單。但是,由於 JDBC 會消耗太多的系統資源,所以 JDBC 對於手機這種內存受限設備來說並不合適。因此,Android 提供了一些新的 API 來使用 SQLite 資料庫,Android 開發中,程序員需要學使用這些 API。
資料庫存儲在 data/< 項目文件夾 >/databases/ 下。 Android 開發中使用 SQLite 資料庫 Activites 可以通過 Content Provider 或者 Service 訪問一個資料庫。
創建資料庫 Android 不自動提供資料庫。在 Android 應用程序中使用 SQLite,必須自己創建資料庫,然後創建表、索引,填充數據。
Android 提供了 SQLiteOpenHelper 幫助你創建一個資料庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創建資料庫。SQLiteOpenHelper 類根據開發應用程序的需要,封裝了創建和更新資料庫使用的邏輯。
SQLiteOpenHelper 的子類,至少需要實現三個方法:
1 構造函數,調用父類 SQLiteOpenHelper 的構造函數。這個方法需要四個參數:上下文環境(例如,一個 Activity),資料庫名字,一個可選的游標工廠(通常是 Null),一個代表你正在使用的資料庫模型版本的整數。
2 onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數,根據需要對這個對象填充表和初始化數據。
3 onUpgrage() 方法,它需要三個參數,一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個資料庫從舊的模型轉變到新的模型。
接下來討論具體如何創建表、插入數據、刪除表等等。調用 getReadableDatabase() 或 getWriteableDatabase() 方法,你可以得到 SQLiteDatabase 實例,具體調用那個方法,取決於你是否需要改變資料庫的內容:
update()方法有四個參數,分別是表名,表示列名和值的 ContentValues 對象,可選的 WHERE 條件和可選的填充 WHERE 語句的字元串,這些字元串會替換 WHERE 條件中的「?」標記。
update() 根據條件,更新指定列的值,所以用 execSQL() 方法可以達到同樣的目的。 WHERE 條件和其參數和用過的其他 SQL APIs 類似。
delete() 方法的使用和 update() 類似,使用表名,可選的 WHERE 條件和相應的填充 WHERE 條件的字元串。 查詢資料庫 類似 INSERT, UPDATE, DELETE,有兩種方法使用 SELECT 從 SQLite 資料庫檢索數據。
1 .使用 rawQuery() 直接調用 SELECT 語句; 使用 query() 方法構建一個查詢。
Raw Queries 正如 API 名字,rawQuery() 是最簡單的解決方法。通過這個方法你就可以調用 SQL SELECT 語句。
例如: Cursor c=db.rawQuery( 「SELECT name FROM sqlite_master WHERE type=』table』 AND name=』mytable』」, null);
在上面例子中,我們查詢 SQLite 系統表(sqlite_master)檢查 table 表是否存在。返回值是一個 cursor 對象,這個對象的方法可以迭代查詢結果。 如果查詢是動態的,使用這個方法就會非常復雜。
例如,當你需要查詢的列在程序編譯的時候不能確定,這時候使用 query() 方法會方便很多。
Regular Queries query() 方法用 SELECT 語句段構建查詢。SELECT 語句內容作為 query() 方法的參數,比如:要查詢的表名,要獲取的欄位名,WHERE 條件,包含可選的位置參數,去替代 WHERE 條件中位置參數的值,GROUP BY 條件,HAVING 條件。 除了表名,其他參數可以是 null。所以,以前的代碼段可以可寫成:
String[] columns={「ID」, 」inventory」};
Java代碼
String[] parms={"snicklefritz"}; Cursor result=db.query("widgets", columns, "name=?",parms, null, null, null);
使用游標
不管你如何執行查詢,都會返回一個 Cursor,這是 Android 的 SQLite 資料庫游標,
使用游標,你可以:
通過使用 getCount() 方法得到結果集中有多少記錄;
通過 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍歷所有記錄;
通過 getColumnNames() 得到欄位名;
通過 getColumnIndex() 轉換成欄位號;
通過 getString(),getInt() 等方法得到給定欄位當前記錄的值;
通過 requery() 方法重新執行查詢得到游標;
通過 close() 方法釋放游標資源;
在 Android 中使用 SQLite 資料庫管理工具 在其他資料庫上作開發,一般都使用工具來檢查和處理資料庫的內容,而不是僅僅使用資料庫的 API。
使用 Android 模擬器,有兩種可供選擇的方法來管理資料庫。
首先,模擬器綁定了 sqlite3 控制台程序,可以使用 adb shell 命令來調用他。只要你進入了模擬器的 shell,在資料庫的路徑執行 sqlite3 命令就可以了。
資料庫文件一般存放在: /data/data/your.app.package/databases/your-db-name 如果你喜歡使用更友好的工具,你可以把資料庫拷貝到你的開發機上,使用 SQLite-aware 客戶端來操作它。這樣的話,你在一個資料庫的拷貝上操作,如果你想要你的修改能反映到設備上,你需要把資料庫備份回去。
把資料庫從設備上考出來,你可以使用 adb pull 命令(或者在 IDE 上做相應操作)。
存儲一個修改過的資料庫到設備上,使用 adb push 命令。 一個最方便的 SQLite 客戶端是 FireFox SQLite Manager 擴展,它可以跨所有平台使用。
如果你想要開發 Android 應用程序,一定需要在 Android 上存儲數據,使用 SQLite 資料庫是一種非常好的選擇。
第五種: 網路存儲數據
前面介紹的幾種存儲都是將數據存儲在本地設備上,除此之外,還有一種存儲(獲取)數據的方式,通過網路來實現數據的存儲和獲取。
我們可以調用WebService返回的數據或是解析HTTP協議實現網路數據交互。
C. 如何從眾多的Azure管理工具中做出正確選擇
自從Windows Azure首次發布以來,微軟公司的首要重點就一直是開發出一套工具來幫助用戶管理其資源。這個雲計算平台是出了名地難於管理,但是微軟公司也在一直致力於滿足客戶需求並為供應商和開發人員提供一個應用程序編程介面(API)以擴展其功能。眾多第三方廠商和開源企業都加入了為微軟公司開發管理Azure不同方面工具的行列中,從而為用戶提供一種較好的管理體驗。但是,面對著所有執行不同任務的無數選擇對象,作為用戶的你又應當如何作出正確選擇呢?首先,我們可以把這些工具劃分為三種類別:微軟公司的、開源的以及第三方供應商的。
微軟公司提供的管理工具與服務 作為微軟公司降低管理Azure資源復雜性計劃的一部分,他們為客戶提供的工具能夠在一定程度上幫助他們。有幾種選項可供選擇,用戶可以使用組合的、或獨立的方式來協助完成不同的任務。
Windows Azure管理門戶:Windows Azure管理門戶是進行Azure資源管理的主要方法。這個工具可允許用戶管理除了通過其預覽頁面為增強測試提供更新以外Windows Azure的各個方面。而且,微軟公司又於近期推出了一個具有豐富圖形用戶界面(GUI)的升級版Windows Azure管理門戶工具。
Azure PowerShell: Azure PowerShell是一款供Windows 伺服器操作系統中眾多角色和功能使用的腳本環境和框架,用戶可通過它管理幾乎所有的Azure資源。它可被用於執行各種任務,其中包括以命令行提示的方式進行交互,以及通過腳本程序進行自動任務執行。使用Azure PowerShell的主要優點就是,用戶可通過使用PowerShell腳本程序自動重復執行Azure任務。
Azure PowerShell強健如Unix shell。它的cmdlet執行的功能與Windows Azure管理門戶一樣,可用於創建、測 試、部署以及管理通過Azure平台交付的服務。開始學習Azure PowerShell的一個好方法就是使用這些cmdlet。微軟公司還在其腳本程序中心維護著一個Azure腳本程序庫。
Azure跨平台命令行界面:Azure的跨平台命令行界面為用戶使用Azure資源提供了一種跨平台開源命令的方法。而名為xplat-cli的工具也為Azure管理門戶提供了類似的功能。雖然PowerShell的 cmdlet只能在Windows操作系統上運行,但是xplat-cli則允許非windows虛擬管理員在其它不同操作系統上使用Azure資源,其中包括:Linux、Windows以及Mac等。系統中心應用程序控制器。如果你在你的內部部署網路中已經安裝了系統中心應用程序控制器,那麼你就可以連接至你的Windows Azure訂閱,它能夠讓你輕松地配置、部署以及管理Azure虛擬機和服務。通過使用應用程序控制器,你能夠把一個現有的虛擬機復制至Azure,把虛擬機模板部署至Azure以及管理訂閱設置。
Visual Studio的Windows Azure工具:如果你已經安裝了Visual Studio的Windows Azure工具,那麼你就可以在Windows Azure 中以你的存儲賬號查看二進制大對象、隊列以及表數據。伺服器瀏覽器是Visual Studio Windows Azure工具中的一部分,它讓開發人員能夠管理你在Azure中創建的存儲賬號。它還提供了創建Azure虛擬機和對這些虛擬機進行遠程調試的功能。
Windows Azure AD許可權管理管理工具:微軟公司提供了一套工具,用於在你提交內容至其雲計算服務時進行數據加密和使用限制設置。許可權管理功能可以幫助用戶保護由微軟Office及其他應用程序創建和交換的內容。如果你是一名Office 365的用戶或者如果你已訂閱了微軟在線服務,那麼你就可以下載這個工具並開始管理和配置Exchange Online、SharePoint以及Office應用程序的許可權管理功能。
Windows Azure 和服務管理REST API:通過使用服務管理REST API開放軟體應用程序,軟體供應商和開發人員可以進一步擴展Azure的管理功能。Azure的REST API為用戶訪問Windows Azure資源提供了一種編程的方式。
Azure管理的開源選項
通過使用REST API訪問Azure的二進制大對象、表和隊列,有很多Azure管理功能的開源擴展工具正試圖解決相關難題。
Chef Knife Azure插件:雖然Azure PowerShell是一個管理Windows Azure不同方面的核心腳本平台語言,但是它只能用於Widnows 操作系統,它並不是一個開源平台。開源平台的優點在於,它可實現跨平台應用並得到強大用戶社區的支持。微軟公司的開放技術團隊正與開源開發運營工具Chef的開發團隊協作,以提高Windows Azure的資源管理功能。Knife-Azure是一個能夠在Windows Azure中實現虛擬機配置自動化的插件工具。這個插件工具可允許用戶直接以命令行的方式啟動和管理實例,以及輕松地管理、調整和重建Azure環境。Knife-Azure插件的另一個優勢就是,它可為開發和測試工作提供創建你的生產環境完美副本的功能。
Azure存儲瀏覽器工具:Azure存儲瀏覽器工具可配合管理二進制大對象、隊列以及表形式的Azure存儲。
Azure Blob Studio 2011:與Azure存儲瀏覽器一樣,Azure Blob Studio也是一個專為配合雲計算存儲應用而設計的工具。該工具是使用Visual Basic 2010 開發編寫的一個Windows Presentation Foundation應用程序,它可讓開發人員輕松地管理Windows Azure二進制大對象存儲服務中的文件,他們可以使用本地的開發人員賬戶或你自己在互聯網上的賬戶。
在Azure管理中起輔助作用的第三方工具
第三方工具供應商們充分利用Azure在過去的管理經驗,為客戶使用他們的雲計算環境提供了更簡便的方法。這些第三方工具供應商中最為突出的就是Cerebrata公司。
使用Cerebata公司的Azure瀏覽器工具,你就可以在一個地方管理你所有的微軟Azure 二進制大對象。你可以可靠地使用一個響應迅速的用戶界面來上傳和下載二進制大對象。這個工具可允許你在你的存儲賬戶之間傳送二進制大對象,並簡單地搜索和過濾你的Azure 二進制大對象。
D. 對象存儲、塊存儲、文件存儲分別是什麼有什麼區別
你可以把塊理解成整個硬碟,文件理解成硬碟中的文件,對象理解成很多台伺服器中的很多塊硬碟。
E. redis一個對象能支持幾千萬個key么,讀寫會有什麼問題
你好,很高興回答你的問題1.Redis只適合精確檢索,使用keys關鍵字做檢索的話一定會遍歷所有key,如果不能得出精確的key就不能用Redis。「數據對象可能很多,上百個」,對Redis來說「對象」只是字元串,你能做的也只是把對象序列化成字元串存儲到Redis中,取出來時反序列化成對象。2.只要有精確的key,檢索時不會有任何性能問題。Redis用於存儲key的是一個字典對象,查詢性能與數量級無關。3.用pipeline批量執行。4.數據量大部分取決於你使用的數據格式,也取決於你單個key的數據規模。比如使用Hash時,默認entry數量小於512時或value小於64Kb,使用ziplist作為數據結構存儲,否則使用dict作為數據結構存儲。一個key還可能產生一個ttl對象記錄過期時間。很難非常准確地預計。如果不用過分精確地估計的話,建議先放入一部分數據,通過「info」關鍵字查詢放入前後memory的大小來估算。5.Redis是近乎不可視的存儲工具,如果要做數據統計、模糊檢索,就不要用Redis。Redis更適合用於快速存取的場景。希望能幫到你
F. 資料庫的概念我還有點不明白,數據時為一個對象存儲調取的倉庫,那麼現在有SQL,還有access等資料庫
不管是foxpro,SQLsever,還是ACCESS,以及Mysql,ORacle 等等其實都是一種數據倉庫,但用處各有特點和不同,而且用戶的需求也不一樣,但萬變不離其宗,即它們的資料庫結構都是相通的,因此SQL查詢語言除了個別函數不同外,基本也是通用的.
上外提到的幾個資料庫我覺得沒有什麼不同,只是根據用戶需求而開發並附帶的工具各為不一而巳.
G. Spark為什麼要在Hadoop基礎之上搭建
這個問題讓我想起來之前看到的一篇關於spark和hadoop區別的文章,從二者的區別上基本可以分析為spark為何要在hadoop基礎上搭建。看一下下面的幾點:
1、目的:首先需要明確一點,hadoophe spark 這二者都是大數據框架,即便如此二者各自存在的目的是不同的。Hadoop是一個分布式的數據基礎設施,它是將龐大的數據集分派到由若乾颱計算機組成的集群中的多個節點進行存儲。Spark是一個專門用來對那些分布式存儲的大數據進行處理的工具,spark本身並不會進行分布式數據的存儲。
2、兩者的部署:Hadoop的框架最核心的設計就是:HDFS和MapRece。HDFS為海量的數據提供了存儲,則MapRece為海量的數據提供了計算。所以使用Hadoop則可以拋開spark,而直接使用Hadoop自身的maprece完成數據的處理。Spark是不提供文件管理系統的,但也不是只能依附在Hadoop上,它同樣可以選擇其他的基於雲的數據系統平台,但spark默認的一般選擇的還是hadoop。
3、數據處理速度:Spark,擁有Hadoop、 MapRece所具有能更好地適用於數據挖掘與機器學習等需要迭代的的優點;但不同於MapRece的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供互動式查詢外,它還可以優化迭代工作負載。
4、數據安全恢復:Hadoop每次處理的後的數據是寫入到磁碟上,所以其天生就能很有彈性的對系統錯誤進行處理;spark的數據對象存儲在分布於數據集群中的叫做彈性分布式數據集中,這些數據對象既可以放在內存,也可以放在磁碟,所以spark同樣可以完成數據的安全恢復。
H. 有了解軟體定義存儲的嗎,尋專業解答
兩個問題,分開來答。作者是來自我們Dell EMC中國研發集團的張衛兵▼▼▼什麼是軟體定義存儲(SDS)?什麼是軟體定義存儲(SDS),我們來看SNIA(Storage Networking Instry Association)給的定義:SNIA defines SDS as Virtualized storage with a service management interface. SDS includes pools of storage with data service characteristics that may be applied to meet the requirements specified through the service management interface. SNIA將軟體定義存儲(Software-defined Storage, SDS)定義為:擁有服務管理界面的虛擬化存儲。SDS包含擁有數據服務特性的存儲資源池,可以用於滿足服務管理介面制定的存儲需求。理解起來可能會比較抽象,我們先來看傳統存儲。傳統的存儲設備(NAS,SAN)大多是搭建在專門設計的硬體上,實現存儲資源的集中管理和使用。比如在硬體層面定製大量的緩存用於加速數據讀寫,又如在硬體層面使用多處理單元實現高性能和高可用(HA)。對於傳統存儲,硬體和軟體在設計之初就是緊密耦合在一起的。在軟體層面,除了基本的存儲路徑,還需很多工作來驅動和使用特殊硬體資源。專用的硬體和軟體為傳統存儲帶來的性能的提高,但也帶來了開發和運維的復雜性。不同廠商,甚至同一廠商的不同產品,存儲設備的管理和使用的方式也不盡相同,進一步提高了運維的復雜性。每台存儲設備都是相對孤立的系統,存儲資源的管理和使用無法方便快捷的整合。在軟體定義存儲這個概念出現之前,存儲行業還經歷和很長一段時間分布式存儲系統的發展過程。分布式存儲系統可以看作是軟體定義存儲的雛形階段,它通過軟體將存儲資源池化管理,對外提供文件和塊存儲服務。隨著虛擬化時代的到來,對IT基礎設施池化管理使用的需求越來越多,軟體定義基礎設施也隨之興起,在存儲領域的軟體定義解決方案就是軟體定義存儲(SDS)。軟體定義存儲剝離特定的硬體設備和硬體架構,更多的在存儲的功能性上思考數據中心/企業的存儲業務需求。軟體定義存儲將存儲管理服務(Control Plane)從存儲基礎架構(Data Plane)里剝離出來,但仍然保持並擴展每個陣列獨有的價值和特性。軟體定義存儲的實現方式,為企業提供了選擇的便捷性和靈活性,可以幫助企業運行其業務,並滿足彈性增減和和快速部署。但軟體定義存儲還不僅是將存儲資源虛擬池化,由於傳統存儲存在上述諸多痛點,人們希望軟體定義存儲能夠解決這些問題。所以軟體定義存儲除了提供虛擬化存儲資源池之外還要支持:軟體與硬體低耦合 – 軟體定義存儲支持的設備不應局限於專門的硬體,還需要支持通用硬體。可伸縮 - 在不影響可用性和性能的情況下,支持存儲設施容量的無縫伸縮。自動化 - 通過高度的自動化簡化存儲資源管理,以降低維護存儲設施的成本。標准化介面 - 提供標准化的API用於存儲設備的管理、配置和維護。虛擬數據路徑 – 在數據面支持文件/塊/對象存儲的讀寫介面。透明性 – 為消費者提供結合系統資源容量和成本,對自己使用和存儲資源進行管控的能力。第二個問題:軟體定義存儲有哪些產品?應用情況如何?純存儲形態:開源存儲Ceph,Gluster,HDFS等 Ceph和Gluster作為優秀的開源軟體定義存儲解決方案,在雲計算和企業內部存儲方面有著廣泛的應用;HDFS作為大數據分析的後端存儲,也有著很大的用戶群體。商業化存儲ECS, IsilonSD Edge等 ECS(Elastic Cloud Storage)是一款軟體定義存儲產品,支持雲應用級別的對象存儲。 IsilonSD Edge是軟體定義的NAS存儲產品,適合中小企業使用。超融合形態:商業化超融合產品:Dell EMC VxRail,VMware vSAN VxRail是一款虛擬化環境中的超融合產品,集成軟體定義存儲功能。 VMware vSAN是VMware提供的超融合基礎架構解決方案。 軟體定義存儲在各類企業中有著廣泛的應用,並且在蓬勃的發展。值得一提的是,很多傳統的存儲產品也在優化架構和增加功能,結合軟體定義存儲的需求發展,融入軟體定義存儲的行列。
I. Filecoin主網上線之際,技術解讀算力奧秘
隨著Filecoin主網上線,加密市場的新熱點得以延續。
有人稱Filecoin為泡沫,有人看好Filecoin市值超過比特幣,而Filecoin的去中心化存儲到底能不能真正解決目前面臨的問題,Filecoin能否滿足大家的期望,一切都只能拭目以待。
10月15日,Cointelegraph中文舉辦線上訪談對話欄目HUB LIVE,本期主題為《Filecoin主網上線之際,技術解讀算力奧秘》。
Cointelegraph中文(簡稱CTC)HUB是一檔由Cointelegraph中文發起的線上訪談欄目。聚焦區塊鏈和加密貨幣行業領袖人物,探討當下行業細分賽道的發展機遇與挑戰,以及企業如何突破行業現狀,引領未來。
本次訪談主持人由Cointelegraph中文商務總監Tracy擔任,還邀請到了星際聯盟聯合創始人兼CTO毛必盛、火星雲礦總裁商思林和IPFS原力區CTO李昕三位嘉賓。本次訪談針對Filecoin的願景和目標、Filecoin經濟模型和存在問題以及Filecoin在IPFS中的角色及起到的重要性等話題展開討論。
嘉賓核心觀點::
火星雲礦總裁商思林: 過於隨意改變規則並不利於項目的發展。相比算力的集中度,制定規則的集中度更令人擔憂。
星際聯盟聯合創始人兼CTO毛必盛: 早期,Filecoin推崇將閑置的資源利用起來,提倡人人都可以挖礦。現在,Filecoin挖礦要求更專業的設備,有很高的門檻。
原力區CTO李昕 :我希望有技術的人才進入Filecoin,作為生態開發者,非常需要有很多服務和應用。特別是在Filecoin上線之後,後面有很多事情要做。
火星雲礦總裁商思林 :一個理想化的網路和世界,你要靠什麼來去建成?是需要靠區塊鏈激勵機制來建成,我覺得現在激勵模型還存在一個問題。
星際聯盟聯合創始人兼CTO毛必盛: 雖然Filecoin是一個去中心化存儲網路,但是Filecoin應該以一個個"中心化公司"來運營。
原力區CTO李昕: Filecoin在IPFS基礎之上構建的分布式存儲網路,為現有的互聯網帶來了"信任",將成為Web 3.0的重要基石。
以下是直播整理內容:
1.Tracy: 簡單介紹一下你們自己以及你們目前做的項目還有Filecoin相關這個項目。
毛必盛:我是星際聯盟聯合創始人和CTO毛必盛,星際聯盟於去年6月份成立,成立了一年多,目前發展情況非常不錯。我們公司在太空競賽中國內排名第七,海外節點拿到13萬多個獎勵幣,目前4個節點正在運行,總算力在26P多。
商思林: 大家好!我是火星雲礦商思林。火星雲礦是火星區塊鏈一站式挖礦服務平台,一切從挖礦開始,給投資者提供一站式的服務。今年6月份正式開始陸續上線Filecoin算力產品,與多家頭部礦機廠商合作。目前約有4000頭礦礦工在火星雲礦平台上投資Filecoin,平台用戶總持有算力在3萬T左右。
李昕: 我是IPFS原力區聯合創始人、CTO,分布式存儲和Web3的推動者和實踐者,深耕分布式存儲20年。曾是思科對象存儲中國區負責人,目前致力於Filecoin的共識演算法、復制證明、經濟模型、集群架構等關鍵模塊的設計與生態建設。我們原力區從2017年就加入了IPFS這個賽道,一直致力於通過技術賦能Filecoin生態。
2.Tracy: 市場上最熱的話題就是Filecoin,聊到幣價大家都會關心。在這樣行情下面,誰其實是最大獲益者?Filecoin上線之前質押了大量代幣,這波助推誰獲益?誰又是背後助推者?是質押帶來行情的嗎?
毛必盛: 我覺得根據目前經濟模型,礦工釋放的幣其實很少,前6個月全網釋放出1.2億個幣,礦工只佔8%。早期流通的幣裡面大部分是投資者所有,早期參與ICO的投資者是最大受益者。
商思林: Filecoin主網上線最大的受益者是交易所,中期可能是Fil私募投資者受益,從7毛到2塊多,大家可以算一下裡面的倍數。按照現行6個月、12個月、36個月釋放代幣,礦工前後限制比較多,加上懲罰機制。我覺得私募投資者也是受益方。
李昕: 我同意商總的觀點!因為目前Filecoin和別的代幣不一樣,它有一個釋放空間,最短也是6個月。前一個禮拜可能就非常稀缺,加上抵押,釋放的幣非常少,在這種情況下,價格虛高是很正常的。前期投資人的幣也沒有多少,實際上釋放出來的幣非常少,包括礦工手上也很少,看起來是投資人幣多,實際上,市場上好多投資人已經簽過一些協議,早期轉給礦工一些幣,他們手上幣其實也不是很多。
由於整個市場比較火熱,實際上是誰獲利其實很難判斷。這個時候如果價格虛高,對礦工來說並不是特別好的一件事情,因為抵押需要填幣進去。
商思林: 除非它完全舍棄現在的路線,因為商業化存儲要求極高的穩定性,包括長時間的穩定性,就是人人做貢獻,就像當年咱們用BT、電驢看小視頻一樣,人人貢獻帶寬資源,那種不現實,極其不穩定。這是人人可以參與的,在家裡弄一個設備都可以參與,但是現在變成非常專業化的一個存儲網路。要專業的設備,專業的運維,大量的投資。
剛才提到了受比特幣的啟發,比特幣靠對礦工一個簡單的激勵模型和長時間的發展,發展到今天。目前來看這也有一些微辭,感覺礦工已經投入了幾十億的人民幣進去,後面還會更多。官方開發者對規則的改變比較頻繁,而且官方傾聽礦工的聲音最起碼還不夠,這一點有些背離。一個理想化的網路和世界,你要靠什麼來去建成?靠區塊鏈激勵機制來建成,我覺得現在激勵模型還存在一個問題。 還有就是算力集中化,其實比特幣的算力集中化更為嚴重,算力集中化本身不是一個問題,只要算力進出自由,而且整個算力網路多方參與,面臨毀滅性打擊時候,可以自我恢復,我覺得這就是踐行去中心化的精神。我覺得相比較而言,算力集中度更讓大家擔憂,開發者的集中度,制定規則的人的集中度和去中心化,所謂核心開發者和項目團隊是不是一個真正的開放社區,我覺得這一點非常重要。 當然,一個項目初期,更集中化一點我覺得可以理解,但是如果隨意去改變規則,或者說沒有經過多方討論,就想出台一個規則,這其實也不利於網路發展。開發和治理中心化比算力中心化更值得讓人警惕。
毛必盛: 我也贊同商總,早期,Filecoin提倡把閑置硬體資源利用起來,包括存儲資源、帶寬資源,現在需要非常專業的設備,這是一個比較大的改變。包括從2018年、2019年年初的時候,代碼開源到現在,整個核心演算法經過變革,包括前期一些英特爾機器做密封的時候效率比較低,因為網路、系統穩定性要求非常高,家庭挖礦變成集中式挖礦。 還有懲罰,早期白皮書裡面講的並不多,現在還是有一些懲罰的。6年來比特幣到網路基線里釋放的幣比較少。存儲挖礦早期只有70%,現在是55%,剩下15% 是項目方掌控,怎麼分配等規則需要制定,還有前置質押,最坑的就是質押,大家為了保持算力增長,買了大量質押幣。這個出發點我們也思考過,逼迫礦工想辦法對接有用數據進來,礦工追求算力增長,但整個網路並不需要這么多垃圾數據,官方非常隨意改變規則,包括競賽第一階段沒有說算力直接平移過來。規則每天都在變,有點中心化的感覺。
3.Tracy: 剛剛商總談了一下關於挖礦經濟模型,包括剛才提到目前經濟模型對礦工不太友好,怎麼深度理解?
商思林: 簡單來講,你前期需要質押大量的幣,同時你挖到的幣在180天後線性釋放。這個時候你簡單算一下,主線上線以後,未來一個月,你可以拿到的幣真的很少。開一個玩笑,現在逼著礦工到二級市場炒波段去,主網上線第一個月甚至前三個月你可以享受主網上線紅利,理論上來講你應該拿到,但是你拿不到。因為我們一開始包括跟投資者溝通的時候,大家盼著挖頭礦,產出更高。現在經濟模型造成市場幣確實少,但是礦工幣更少,大概這么一個邏輯。 我也同意質押幣它的真實邏輯其實可能站不住,到底這個質押幣為何需要質押,除了貢獻流動性通縮之外,好像沒有本質的區別。我覺得整個網路壯大,需要這個冷啟動過程。官方過分強調有效數據,可能太偏理想化狀態,主網可以快速啟動,無論是通過財富效率還是網路壯大,讓更多人認識它,我覺得這才是重點。
4.Tracy: 我們知道Filecoin裡面,原力在技術上面貢獻很多, Filecoin在IPFS角色中體現了什麼重要性? 請李總回答一下。
李昕: Filecoin在IPFS基礎之上構建的分布式存儲網路,為現有的互聯網發展帶來了"信任",將成為Web 3.0的重要基石。IPFS網路是比較成功的一個網路,將來肯定對資源的利用率越來越高。IPFS它是完全開放開源的一個平台。這個平台的很大一個問題在哪裡?這個平台它是一個很自由開放,可以隨時進出、免費的一個平台。這樣一個平台很難做商業化應用。因為做商業化應用,你需要有人提供有質量的服務,服務質量高,我願意付錢,但是它沒有做這一層。藉助IPFS平台提供服務中心化的商家有很多。半中心化平台跟中心化平台跟之前完全不同。這樣一來完全去中心化,可以通過Filecoin很多協議,變成一個成熟市場。因為IPFS本身自己是一個網路,當兩個網路技術都是一致的,兩個技術就可以打通,打通以後有很多生態服務商。
毛必盛: Filecoin挖礦有幾個點比較重要,演算法肯定是其中一個,早期的時候特別關鍵。現在基本上各大礦商都在優化,Filecoin也在優化,沒有多大區別。 第二個是任務調度,每家礦商采購機型都不一樣,任務調度這一塊感覺比較多,比較關鍵。還有幾個點比較容易被大家忽視,Filecoin挖礦跟比特幣挖礦不太一樣,第一個就是存儲,Filecoin是存儲類的項目,現在一些潛在問題沒有被暴露出來,這裡面存儲這一塊水還是非常深的。做過存儲的人都知道,將來集群越來越大的時候,存儲問題就會暴露出來。
我們將來會放大存儲的優勢,和有效數據應用落地在Filecoin網路中,這樣會有很大優勢。 還有一塊是運維,大規模伺服器,不間斷運行,在早期我們也意識到了運維的重要性,在整個運維團隊搭建也是投了重金,核心成員是來自阿里雲的運維高級人才。目前運維這方面我們很有自信說,是數一數二的。未來,有效數據是核心競爭力,我們會更具有戰略性布局去對接有效數據,以及在生態應用落地上面,有一些礦商只是想挖礦而已,我們是互聯網基因比較強的公司,要在這個行業長久做下去,應用方面也做了很多布局。
6.Tracy: 挖礦需要質押代幣,從而會形成對大量代幣的需求,這樣會不會催生去中心化借貸平台?
李昕: 抵押機制跟幣的流通量有關,流通越多抵押越多。如果這個裡面流通的幣價格往上漲,越漲越不願意賣。漲的情況下,大家反而越虛越買不到。這種情況下如何把大家系統裡面區塊鏈上計算出來的流通量與市場上真正的流通量匹配起來。市場上的流通量是在交易所交易的,而不是囤起來的,但是系統不知道。一定要把這個激活,把自己藏在枕頭底下的私房錢拿出來存銀行裡面,可以向外借,向外貸。這樣大家可以把存的幣拿出來,得到利息,通過其他人可以把這個幣代出來。像類似銀行的機構,和去中心化平台,借貸中介同時也可以生存,使這個市場活躍起來。 流通也活躍起來,其實沒有DeFi,也是可以做。Filecoin需要做幾個事情,怎麼把Filecoin這個幣和DeFi打通,跨鏈這個東西,中間會有一個託管平台。直接發一個代幣,需要有借貸這個部分。現在國內和國外有很多開發者和機構合作,可以來做借貸這個事情。所以,我覺得DeFi跟Filecoin有一個天然的契合點,
商思林: 我同意李總的看法,Filecoin可能是最適合做DeFi項目的。它可以在各個環節上進行鎖倉,沒有一個釋放。礦工有前置質押,有多少天的釋放,交易所也存在一個天數釋放。這幾方都是需要借貸,需要把這個鎖住的東西的流動性釋放出來,或者不夠再借再還,天然契合DeFi這個需求。我們認為DeFi的借貸本質是挖礦,挖礦是央行,借貸DeFi是商業化銀行,資金流動性匯集起來然後分發出去,讓資產有效流動起來,這是它的一個價值。也可能打破Filecoin流動性悖論,這個悖論是前期幣很少,然後市場上對礦工群體或者各個群體對幣的需求量很大,造成幣價上漲,又造成流動性問題,可能在二級市場做短期交易,沒有辦法真正流轉到需要它的地方。這個悖論初期很難打破,因為幣價上漲因素會刺激大家。前幾天私募投資者說90%的人說開盤肯定會賣,絕大多數人不會考慮借貸。早期價格非常高,這個時候他們願意賣。DeFi的核心價值在於它通過區塊鏈和挖礦的方式,激勵通過二級市場短期操作產生暴利。二級市場看起來暴利,但是風險很高。如果DeFi出來,我認為在Filecoin市場上會很好地流動起來。這對項目方來講也是一個挑戰,隨著後面這個幣流通越來越多,它會有製造通縮這樣的需求,但是DeFi本質上是製造流動性,製造流動性對它來講也是一個挑戰。
7.Tracy: 類似於Filecoin去中心化存儲,在國內如何適應監管?如何更好迎合這個市場?
李昕: 去中心化存儲和中心化存儲監管有什麼區別?實際上差不了多少。因為對礦工來說,可以看成和中心化存儲服務商一樣,如果礦工能夠遵守國家的法律法規,知道是什麼東西,什麼能存儲,什麼不能存儲,要有相應的手段和軟體來實現這種東西,那你就可以合規。中心化存儲在國內像網路、阿里都是一樣。一方面來講,監管我覺得本質來說沒有多大區別,尤其在目前相對來說不是那麼多人提供存儲的情況下,相對來說不是特別難,市場上給他們提供技術的服務商可能最多也就二三十家。 第二個方面,我覺得本身這個事情,在中國和其他國家沒有多大區別,包括你在別的國家同樣受監管。比如在歐洲,GDPR早就出來了,同樣受到監管。可能這有比較大的難度,當這個東西足夠分散的時候,相對來說可能難一些。
就跟互聯網一樣,我們現在人人都有微信,因為現在的互聯網跟以前不一樣,互聯網從1.0到5.0,以前是可以讀的互聯網,現在是讀寫的互聯網,每天可以上傳很多東西。同樣受監管,你每天上傳東西有問題,很快被糾出來。這個角度來說其實很分散,技術難度大一些,但是本質沒有很多問題,仍然可以去監管。
真正的數據服務商可能就需要做這些事情,而不是簡單把別人的軟體拿來用。還有一個方面,你要存真實的數據,這個東西怎麼樣來存儲?在幫助大家合規這個方面要做很多事情。做真實的數據,驗證客戶,你可能有一些協議,必須要符合一些條款,你自己要負責。通過數據有保證,不違反條款等等一些類似手段幫助大家做事情。 針對保護隱私的問題,基本上是通過訪問許可權控制來做。這是一個方面,實際上監管還有很重要的一個方面,就是你的數據不能違法,實際上國內所有的存儲雲廠商都有自己很完善的工具去鑒別。
商思林: 我的觀點是這樣,大家知道以太坊上也可以寫東西,如果從內容角度來講它也可以寫東西。2018年,中家網信辦出台備案監管條例來源,很大一部分原因是,以太坊出來的內容有一部分刪不掉,觸發了監管層的思考。出現違法信息要及時刪除,事實上很難做到。因為條例出台前後我也參與了一些調研,網信辦委託我們做調研。後來我問到相關企業負責人的時候,其實他們後來對這個問題就釋然了,原因是他們也明白信息存儲和信息傳播是兩件事情。你家裡可能藏著一個不合適的東西,如果你不進行傳播,或者你不進行大范圍傳播,它可能帶來的危害性非常低,這其實是兩個層面的事情。信息傳播其實是傳統的監管,中心化的監管有非常強力的手段,無論中國還是美國或者其他地區,他們有能力切斷傳播信息。對於源頭是不是百分之百確保沒有或者可刪除信息,其實沒有當時那樣緊張。 第二,剛才李總提到的很多介入性手段可能會實現,但是我不是特別擔心這一點。監管層最終可能適應區塊鏈這一點,發揮它積極的一面。包括互聯網也是一樣。監管層越來越了解區塊鏈,利用區塊鏈反洗錢等特點,跟去中心化合作得挺愉快的,也很有效。
毛必盛: 像網易、騰訊、阿里、犀牛凡涉及內容存儲的互聯網公司,國家對他們的數據存儲監管非常嚴格。Filecoin將來被商用之後,雖然Filecoin是一個去中心化存儲網路,但是Filecoin應該以一個個"中心化公司"來運營。在封存存儲數據的時候,密封之前有一個類似於這種服務,把有問題的內容過濾掉。在檢索時候,有些數據可能不在我們這邊,從別的節點查到的,再給客戶,這種中間會加一道過濾服務,把一些 健康 合規的數據反饋給終端。所以,從整個層面來看,監管這一塊我覺得應該問題不大,因為對Filecoin來講,礦商其實就是一家雲存儲服務商。
8.主持人: 我們展望下未來,你們對Filecoin發展有什麼樣的期待?
李昕: 首先,我覺得Filecoin剛起步。Filecoin是一個通用存儲平台和一個去中心化平台,是一個很成功的試驗。它是面向相對於未來的技術,未來有多遠?有時候未來看20、30、50年,是不是還是Filecoin?我覺得不一定。Filecoin在整個 歷史 過程當中會書寫自己很重要一筆,方向完全沒有錯。目前我們所有的終端越來越強,處理能力和帶寬越來越高,使得IPFS和Filecoin非常適合未來的應用。長期看來,Filecoin本身的願景就是為未來人類信息文明承載一個平台。
商思林: Filecoin,就像移動互聯網時代巨頭,一定從一個新世界裡面誕生一樣,像谷歌,它一定不是說在PC時代誕生,一定在原生新世界裡面誕生。美團看起來挺土,如果不是移動互聯網,不是移動支付,不可能發展起來。我對Filecoin最大一個期待就是,它能夠支撐區塊鏈這個世界,真的去製造一個我們想像不到一個巨大的應用場景,超級這種去中心化,你可以說它是巨無霸,整個機制是去中心化。我現在其實也沒法去預測應用和商業模式是什麼。但是我覺得新的偉大東西一定在全新世界裡面產生,到底跟中心化存儲爭多少份額,不是我現在最關心的。在未來10年以內,去中心化存儲基礎設施上能長出什麼參天大樹,這是非常期待的。
9.Tracy: 怎麼參與到Filecoin這個賽道上面?挖礦還是技術?
李昕: 參與方式非常多,我現在希望有技術的人才進來,作為生態開發者,非常需要有很多服務和應用。因為Filecoin上線之後,後面有很多事情要做,有非常多的故事要講,這個裡面一定要把生態做起來。我們作為生態裡面一員,非常希望看到這個東西做好。而且我們看到很多人參與進來,這是非常好的事情。普通人可以做小的投資,可以去買幣、去享受紅利。或者說你參與到挖礦裡面,獲得比較穩定一個收益。
商思林: 現在沒法參與早期投資,我覺得在二級市場做一點你可以承受范圍之內投資挺好,我很早說大家今年下半年絕對不可錯過Filecoin。今年下半年不參與Filecoin,就像當時早期沒有參與以太坊一樣,只不過風險比較大。從投資角度來說挖礦還是比較合適,我們不能對挖礦幻想暴利,這個不現實。Filecoin鼓勵你長期持有和運維,我覺得挖礦依然是一個選擇。
毛必盛: 個人非常期待整個生態發展,因為現在基本上有500P數據,特別期待真實的數據提案出來之後,後面一些有效數據進來,再過半年或一年,可能整個生態裡面有一些應用,包括Filecoin網路裡面進來大量商用數據。我們可以做很多事情,除了挖礦本身。尤其目前質押幣嚴重不足,一定有算力富餘這種情況,可以基於硬體資源做這些事情。
目前Filecoin,包括整個機制,我覺得離商用還是有很大距離。我覺得將來Filecoin需要需把整個機制優化一下。檢索是未來一個方向。
J. 誰有用C#開發的工具
1.Excle神器NPOI
NPOI 是 POI 項目的 .NET 版本。POI是一個開源的Java讀寫Excel、WORD等微軟OLE2組件文檔的項目。NPOI讓.NET平台擁有了一個比較完善的讀寫Excel的工具。使用量非常廣泛,應該是開源的.NET Excel讀寫工具中曝光度最高的一個吧,沒有之一。
使用NPOI的優勢有:完全免費使用,包含了大部分EXCEL的特性(單元格樣式、數據格式、公式等等),支持處理的文件格式包括xls, xlsx, docx.採用面向介面的設計架構( 可以查看 NPOI.SS 的命名空間),同時支持文件的導入和導出,你不需要在伺服器上安裝微軟的Office,可以避免版權問題。使用起來比Office PIA的API更加方便,更人性化。那麼還等什麼呢?下面就是我第一次使用NPOI做的一個日報表工具,裡面的單元格合並都是在程序中動態完成的,過程很艱辛,但結果很美好,目前已經使用了2年,穩定無bug,非常給力啊。
官方網站:http://npoi.codeplex.com/
https://github.com/tonyqus/npoi
官方教程:http://www.npoi.info/
2.NPOI擴展—NPOI.CSS
NPOI.CSS是一個可以在使用NPOI時用類CSS的方法設置單元格樣式的NPOI擴展,只支持.NET4及以上版本的項目。這個擴展是為了方便在使用的時候設置單元格及其相關格式樣式,可以使用類似Css的方式,非常給力。看看下面的代碼:
1
cell.CSS("color:red;font-weight:bold;font-size:11;font-name:宋體;border-type:thin;")
官方網站:https://github.com/qihangnet/npoi.css
3.yjinglee.office
yjinglee.office用於.Net平台下的Excel操作,主要封裝NPOI對外提供更簡單實用的API,提供以下功能點:
1.讀取Excel數據轉換成對象集合
2.寫入集合到Excel,並提供可以Excel樣式定義
看看一段讀取Excel的代碼:
1
2
3
4
5
6
7
8
9
10
var Reports = new Collection();
for (var i = 0; i < 10; i++)
{
Reports.Add(new Report {Id = i*100, Name = Guid.NewGuid().ToString()});
}
var excel = new Excel(new DefaultStyle());//創建Excel實例,可以傳遞不同的樣式實例
excel.CreateSheet("Test");//創建一個Sheet,命名為Test
excel.WriteObject(Reports, 0, 0);//在Sheet0中的第0行寫入集合
excel.SetColumnWidth(0, 0, new [] {5, 35});//在Sheet0的第0列開始依次設置列寬
excel.WriteFile(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "demo.xlsx"));//保存文件
4.ExcelReport報表引擎
ExcelReport是一款基於NPOI開發的報表引擎組件。它基於關注點分離的理念,將數據與樣式、格式分離。讓模板承載樣式、格式等NPOI不怎麼擅長且實現繁瑣的信息,結合NPOI對數據的處理的優點將Excel報表的生成化繁為簡。同時,對報表組成的基本元素進行了抽象,進一步簡化了Excel報表的生成過程。
官方網站:https://github.com/hanzhaoxin/ExcelReport
介紹文章:http://www.cnblogs.com/hanzhaoxin/p/4472860.html
5.Epplus
Epplus是一個使用Open Office XML(Xlsx)文件格式,讀寫Excel 2007/2010文件的開源組件。和NPOI相比,它更早的支持了Xlsx格式,而NPOI支持Excel 2003更好,現在新版本的NPOI也開始支持Xlsx了。所以他們兩個還是有一點區別的。Epplus我沒用過,但很早就聽說了,也是使用非常官方的一個,目前也一直在更新。看大家的使用需求了。可以嘗試一下。支持的范圍也很廣,例如:單元格合並,單元格樣式,圖表(這個NPOI目前還不是很好),表格,數據驗證,公式,VBA等等。
官方網站:http://epplus.codeplex.com/
6.LinqToExcel
LinqToExcel是一個.NET平台下開源項目,它主要實現了LINQ的語法查詢Excel電子表格。類型之前的LINQToXXX如果你是LINQ語法糖愛好者那最適合你。例如,下面代碼,查詢電子表格的頭:
1
2
3
4
var excel = new ExcelQueryFactory("excelFileName");
var indianaCompanies = from c in excel.Worksheet<Company>()
where c.State == "IN"
select c;
官方網站:https://github.com/paulyoder/
7.NetOffice組件
NetOffice組件比較特別,是一個操作Office的強大組件,包括處理Office, Excel, Word, Outlook, PowerPoint, Access, Project, Visio等,所以支持非常全面。但是這個組件並不是完全單獨寫的,而是調用Microsoft Office的互操作程序集以及VSTO,也就是進行了一個深度的封裝,從而讓你不需要安裝這些東西,只需要拷貝相應的程序集就可以了。目前一共包括16個操作的程序集。根據你的需要可以選擇相應的程序集。它有幾個優點:
1.沒有Office的版本限制;
2.支持Office2000,2003,2007,2010,2013版本,就是支持全部Office的版本,足夠強大;
3.支持版本之間的獨立開發
4.操作語法和Microsoft的互操作程序集的語法是一樣的;因此更加易於學習和使用;
5.如果你熟悉Office對象模型,你可以使用你現有的PIA代碼,不需要重新學習;
6.優化了一些COM操作的代碼
7.可以在.NET2.0及以上環境使用;
8.部署方便,不需要注冊,沒有依賴的程序集
其他的功能看官方文件介紹,如果有空,大家對這個需求強烈,可以寫文章專門介紹。
官方網站:http://netoffice.codeplex.com/
8.Word文檔讀寫工具Docx
DocX是一個以非常直觀簡單的方式操作Word 2007/2010文件的輕量級.NET組件。它的速度非常快,而且不需要安裝微軟的Office軟體。在中國,免費並且小巧的WPS有足夠的理由讓很多用戶放棄龐大的Office,那在實際軟體開發過程中,這玩意就有用處了。遺憾是不支持2003,但總歸是被淘汰的趨勢,而且用WPS,也沒有啥版本的區別。目前支持在文件中插入、刪除和替代文本,支持所有的文本格式,如字體,下劃線,高亮等;支持插入圖片、超鏈接、表格、頁眉頁腳以及自定義屬性等;支持類似JQuery的鏈式寫法,很方便編程開發。
相比Excel來說,開源的操作Doc文檔的組件比較少,這個組件只能勉強滿足一些基本功能吧。遇到一些高級的,坑還是很多。但總的來說,常規支持是第一步吧,該項目目前也在更新中,期待更加完善。我在2013年曾經寫過一篇介紹基本使用的文章:【原創】開源Word讀寫組件DocX介紹與入門
官方網站:http://docx.codeplex.com/
9.PDF處理組件PDFsharp
生成PDF文件格式的文檔,大家肯定有想過,很多人項目中也肯定用過,方法、組件肯定有很多。但是.NET平台開源免費的不多,最好用的應該是ItextPDF,不過人家是非商業免費,所以我們就排除在外吧。看看免費的,這個PDFSharp是目前比較完善,而且還在持續更新的。支持功能有:
可以使用.NET編程語言動態創建PDF文檔,
很容易使用對象模型來構建文檔,
全部用C#重寫設計和編寫代碼,
可以生成PDF文件和顯示在窗體或者列印,
使用同一源文件,可以修改、合並或者分割PDF文件,
可以控制圖片的透明度,嵌入了字體等等。支持總體算全面吧,不過沒有親自測試過。
官方網站:http://www.pdfsharp.net/
10.MigraDoc文檔生成器
MigraDoc是一個.NET平台開源的文檔生成器,幾乎支持所有的文字處理功能。你只需要添加段落,表格,或者圖表到節中,使用書簽來創建鏈接,表格內容,索引等等。MigraDoc會自動進行分頁和布局,可以生成PDF,XPS以及RTF文檔格式。總的來說,是一個更簡單類型的通用文檔生成工具。它的官方網站和PDFsharp是一起的,目前也是在更新中。
官方網站:http://www.pdfsharp.net/
11.PdfReport報表工具
PdfReport 是一個支持code-first的報表引擎,建立在開源項目iTextSharp和 EPPlus基礎上。支持.net 3.5以上,看看項目的一個圖片:
官方網站:http://pdfreport.codeplex.com/
12.文件差異比較diffplex
diffplex是一個開源的C#文本差異比較軟體。支持.NET 4.0, Silverlight 5.0, Windows 8.0, Windows Phone 8.0, Windows Phone Appx 8.1等環境。如下圖所示:
官方網站:https://github.com/mmanela/diffplex
13.ReportGenerator
ReportGenerator可以將OpenCover, PartCover, Visual Studio 或者NCover生成的XML報表轉換為可讀性更加好的格式。上面這幾個工具都是代碼覆蓋率分析工具。轉換後的報表有以下格式:
1.HTML, HTMLSummary
2.XML, XMLSummary
3.Latex, LatexSummary
4.TextSummary
5.Custom reports
該組件目前一直在持續進行更新,對於專門做測試方面的人應該有些幫助,曾經也看到過文章使用這個組件來展示分析後的報表,不過不太懂,不去深究。
官方網站:https://github.com/danielpalme/ReportGenerator
14.BusyReports
BusyReports是一個非常方便的從SSRS Web 服務生成報表的應用程序。BusyReports提供了一個GUI界面,可以方便配置報表參數,電子郵件,文件路徑等。這些配置信息存儲在4個易於編輯的表格中。該組件與SQL Server數據驅動訂閱類似,但刪除了其中一些限制。該組件目前一直在更新。看下面的 GUI 配置界面:
官方網站:http://busyreports.codeplex.com/
15.Seal Report
Seal Report應該是上面這幾個之中最好用,最常用的一個。它提供了一個完整的從其他任何資料庫產生報表的架構。該產品主要關注於容易安裝和報表設計,一旦安裝好,報表很快就可以建立並且發布。該組件完全開源,使用C#語言編寫。其主要特徵有,1.動態SQL數據源:可以使用SQL或讓Seal引擎構建動態SQL用於查詢資料庫,2.本地數據透視表:直接在數據透視表簡單的拖放元素,並將它們顯示在報表中,還支持HTML5圖表等,詳細去官網看看,下面看2張報表設計和報表結果的截圖:
報表結果:
官方網站:http://sealreport.codeplex.com/