首页 > 代码库 > 数据的吞吐(date in, data out)

数据的吞吐(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