天天看點

資料的吞吐(date in, data out)

無論些什麼樣的程式,其目的都是相同的,用某種方式組織資料以為我們的目的進行服務。但是包含的資料不是随機排列的位或者位元組。我們總是把資料建構成能夠描述存在于世界的個體。如果我們知道一個名字和一個郵件位址同屬于一個人的時候那麼這些資料就變得更有意義了。

在真是的世界中,并不是所有的看起來很相似的個體都可一歸為一個type。比如一個人也許有一個電話号,另外一個或許就隻有行動電話,也許還有個人兩個都有。或許一個人有三個郵箱,或許其他人一個頁沒有。再例如,一個西班牙人有三個姓,然而一個英國人就隻有一個。

面向對象程式設計流行的一個原因就是其中有複雜的資料結構的對象幫助我們表述和聯系了真是的世界實體。這個思想的确是目前最好的。

當我們存儲這些對象的時候,麻煩也來了。傳統的我們會把資料存放在行列式的關系資料庫中,這類似于使用一個電子表格。由于存儲媒體的不靈或導緻面向對象的資料結構的靈活性丢失殆盡。

如果我們把對象作為一個對象存儲,而不是圍繞着受限制的電子表格形式的模型設計應用,将會發生什麼呢?這樣我們就能專注于現實的資料了。面向對象的靈活性有回到了我們的掌握中。

對象是特定于程式設計語言的,是貯存在記憶體中的資料結構。如果想在網絡上傳遞,或者存儲,需要把對象轉換為其他的格式。JSON是一種便于人們閱讀的表現對象的資料形式。在NoSQL世界中,他已經成為資料交換的标準格式。當一個對象被序列化到一個JSON格式後,他就是JSON

Document。

ES是一個分布式的document存儲倉庫。他能實時的存儲和檢索複雜的資料結構——如JSON

document。也就是說,隻要document被存儲在ES中,這個document就能從cluster中的任何一個node中被檢索。

當然,我們需要的不僅僅是資料存儲,我們必須要快速對資料進行批量的檢索。然而一系列的NoSQL解決方案允許我們把對象存儲為document,這依然需要我們去思考我們用什麼樣的方式來查詢資料,去思考那個字段被索引能達到快速的檢索資料。

在ES中,所有的字段(field)在預設情況下都是被索引(indexed)的。是以每個field都有一個專用的反轉的index以便于快速檢索資料。不像其他的資料庫,ES能在同一個查詢中所有的專用的反轉的index,以令人驚奇的速度傳回資料。

這個章節我們将會使用create,retrieve,update,和delete

API操作document。現在我們不關心document中的資料,或者怎麼查詢他們。我們關心就是怎麼使用ES安全的存儲資料,然後怎麼擷取存儲的資料。

原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/data-in-data-out.html#data-in-data-out