The Datastore

绝大多数的Web应用在处理一个为了以后的请求作检索用的请求时,需要存储信息。一个小网站的典型安排就是包含一个数据库服务器,然后一个或多个Web服务器连接到这个数据库进行数据的存储与获取。使用一个中央数据库服务器使得数据有一个正规表示(canonical representation)变得容易。所以多个用户访问多个Web服务器看到的是相同的最新的数据。但是一旦中央服务器达到了它的同时连接量时,很难扩展。

在这过去二十年里,用于Web应用的最流行的存储系统就是关系型数据库。用行列构成表实现空间上的高效简洁(space efficiency and concision)。使用原始计算能力(raw computing power)和索引执行查询。Join查询可以将多个相关的记录作为一个查询单元。其他的数据存储系统包括层次数据存储(hierarchical datastores,如:文件系统,XML数据库)和对象数据库。每种数据库都有有缺点,哪一种是最适合于应用的,这取决于应用数据的类型和访问方式。每一种数据库有它自己的技术来跨越一个服务器。(grow past the first server)

Google App Engine的数据库系统极其类似于一个对象数据库。它不是一个Join查询的关系型数据库。如果你来自使用关系型数据库的Web应用,你很有可能需要改变原有的思考应用数据的方式。使用运行时,App Engine数据存储的设计是一个抽象。允许App Engine处理分发和扩展的的细节,而你的应用可以关注于其他方面。

实体和属性(Entities and Properties)

App Engine应用把它的数据存存存储为一个或多个datastore实体(datastore entity)。一个实体有一个或多个属性,每个属性有一个名字和一个值,值是几种原始值类型的一种。每个实体属于一个种类(each entity is of a named kind)。种类将实体进行分类以便查询。

初看,这就像是一个关系型数据库:种类的实体就像表的行,属性就像列(字段)。然而,在实体和行之间有两个主要的不同点。一是,给定的种类的一个实体和相同种类的其他实体不一定有相同的属性。二是,两个实体的相同属性的值可以有不同的类型。在这方面,datastore实体是无模式的。正如将会看到的,这种设计提供了强大的灵活性的同时也面临着维护的挑战。

实体和表的行还有一个不同点是实体的属性可以有多个值。这个特性有一点诡异但是一旦理解了相当有用。

每一个实体都有一个唯一的键。由应用提供或App Engine生成。和关系型数据库不同,这个键不是一个字段或属性,而是实体的一个独立部分。使用key,你可以快速获取一个实体,可以用key值执行查询。

在实体创建之后它的key是不可以改变的。种类也不能改变。App Engine使用实体的种类和key来决定这个实体被存储在一个大型服务器集的什么位置。然而key和种类却不能确保两个实体保存在同一个服务器上。

查询和索引(Queries and indexes)

一个datastore查询返回零个或多个同一个种类的实体。查询可以返回实体的key。查询可以根据条件过滤出属性值满足的实体,也可以返回根据属性值排过序的实体。查询还可以使用key过滤排序。

在一个典型的关系型数据库中,查询是根据表结构进行设计和执行的。表又是由开发人员设计好存储的。开发人员可以让数据库产生和维护确定列上的索引来加快某些查询。

App Engine却不相同。

时间: 2024-10-14 09:44:08

The Datastore的相关文章

Oracle Data Integrator 12c-模型(Model)和 数据存储(DataStore)

一.概念 Model模型: 描述关系型数据的模型. 是一组存放在特定的技术(如Oracle)的数据存储的集合.例如当技术为Oracle时,对应于数据库的Scheme DataStore: 数据存储 一个模型中包含的元数据,对应于模型所在scheme中的表或视图.可以通过反向工程(reverse-engineered) 从真实的环境导入, 也可以在ODI 中创建 二.支持的操作 测试表格 DROP TABLE DEPT; CREATE TABLE DEPT ( DEPTNO NUMBER (2)

Detaching a datastore or storage device from multiple ESXi 5.0 hosts

Using the PowerCLI To detach a storage device using PowerCLI: Review the VMware Contributed Sample Code disclaimer, and deploy the community-supported PowerCLI script available atAutomating Datastore/Storage Device Detachment in vSphere 5. Ensure tha

Parse Local Datastore

Parse Local Datastore 简介 翻译 Pinning Retrieving Objects Querying Security Unpinning Pinning with Labels Caching Query Results Syncing Local Changes 说明 简介 本文翻译了Parse关于本地存储的部分,链接如下:Parse Local Datastore 翻译 The Parse iOS/OSX SDK provides a local datastor

【译】OpenDaylight控制器:MD-SAL架构:DOM DataStore

源文件:https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Architecture:DOM_DataStore#The_In-Memory_MD-SAL_Data_Store_Implementation 问题描述 在MD-SAL数据存储和数据存储本身的当前实现中,存在几个有关数据结构问题: 数据结构(在yang-data-api中定义)更像是XML结构,因此很难在其上实现优化的数据存储. 而YANG定义的数据结构

esxi备份,datastore,vmdk

1)关于exsi vm的分盘问题: 存储的盘映射给esxi主机,然后esxi主机把这个meta盘新建或者扩展新的datastore,从datastore中将空间挂给vm,所以存储的lun和vm主机之间是没有直接映射关系的,lun和esxi的datastore之间有映射关系. 2)如果esxi的server的raid组下的某个lun,不管空间多大,都只能映射给一个主机或一个dtastore,例如一个1T的lun做了500G的datastore1,剩余的500多G是不可能作出另一个datastore

Vmware Failed to login into NFC server Datastore error

Problem Symptom: -------------------------- Runtime Envirnment: --------------------------- Vcenter 5.5 ESXI 5.5 Client WIndows 7 with Wireless Solution Reference: ------------------------ http://www.vspecialist.co.uk/2012/10/failed-to-login-to-nfc-s

GAE Datastore Entities

我们的程序与抽象模型互动,因此不需要管理细节. 与关系型数据库大不相同,以至于谷歌称之为datastore,而非database. App数据存储在数个不同位置,依据best-of-breed consensus protocol. datastore最好理解为object database. datastore中的一个object理解为一个entity. Entity: key – data 一个entity在整个系统中具有一个唯一识别key.可以根据key快速找到entity. Key可以作

PowerShell 发送美观的Vsphere DataStore警报

豆子今天登陆Vsphere VCenter的时候,无意中发现有DataStore的警报信息,个别DataStore的使用空间超过90%了,需要清空一下SAN Volume的Snapshot.这个是运维常见的问题,那么顺便就用PowerShell写个脚本,定期检查发送邮件好了. 脚本本身很容易,但是我想让他尽量的美观一些. 之前我写过一个博文可以自定义sytle的样式 http://beanxyz.blog.51cto.com/5570417/1786712, 不过现在看起来有些麻烦,还是觉得找找

How to Properly Remove Datastore or LUN from ESXi 5.x hosts

This post might be sounds simple that removing datastore from ESXi host but it is not actually simple as it sounds. VMware Administrators might think that right-click the datastore and unmounting. It is not only the process to remove LUN from ESXi ho