Trove系列(五)—Trove的数据存储管理程序类型和版本管理功能介绍
功能描述数据存储管理程序(Datastore)类型管理允许Trove的用户从操作者列出的名单中选择数据库存储管理程序和版本。操作者将可以控制数据库存储管理程序的类型,添加一个新的版本并去活一个老版本。为了实现这个功能,用户可以指定数据库存储管理程序类型和可选择的版本。数据库存储管理程序类型是一种数据库引擎的家族,诸如:mysql, mongodb, cassandra 等。
数据库存储管理程序版本定义了引擎的版本以及为了实现这个引擎所包含的系统包。每种datastore类型具有几个引擎的版本,每种类型有一个缺省的版本。 版本具有激活或者未激活状态。 用户可以用激活的版本创建数据库实例。未激活的版本对用户不可见,用户不可以用未激活的版本创建数据库实例。 但是未激活的版本可以被已经运行的实例使用。
对每种datastore类型而言,操作者可以指定运行实例的操作系统镜像。对每种类型的每个版本而言,操作者可以指定不同的镜像。这样我们可以灵活的选择镜像,数据库类型和版本。
每个版本应该指定系统包的列表。 这些系统包提供了指定数据库的指定版本的在指定镜像上的安装。
这里有可能只指定一个包。但是大多数情况下需要指定多个具有确切版本的包。 对于mysql 来说,你可以指定server, client, shared 和 shared-compat 包。这种情况只在你有不只一个可用版本的情况下才影响。 例如: 如果你仅仅指定 "mysql-server-5.5" 包,但是你又有mariadb 和 percona 可用, 你可以将 mysql-server-5.5, mariadb-shared-5.5, percona-client-55 安装上去。
管理的资源至此,Trove又出现了两种新的资源:datastore_type 和 datastore_version。datastore_type允许操作者定义新的datastore 类型,datastore_type 包含以下数据:id – 一个系统定义UUID值,该值在第一次创建时赋予datastore type.name - datastore type 的名字engine – 提供操作的管理者级别的名字image_id – 镜像的UUID,该镜像将用于实例的部署default_version – 如果用户不指定版本,将使用缺省版本User can see only id and name of datastore type.用户将只能看到id 和 datastore type 的名字 datastore_version资源允许操作者定义指定数据库类型的版本。 包含以下数据。 id -一个系统定义UUID值,该值在第一次创建时赋予datastore type.版本name - datastore type版本 的名字datastore_type – 该版本从属的datastore 类型image_id -镜像的UUID,该镜像将用于实例的部署packages – 用空格隔开的系统镜像列表,该系统镜像提供了这个版本的datastoreactive - bool (1|0) – 表示这个版本是否被激活User can see only id and name, also user can see and use only active versions用户将只能看到id 和 datastore type 的名字,而且用户只能够看到和使用激活的版本。 为了实现这个功能,操作者应在数据库中定义datastore 类型 和 可用的版本。 trove-manage 将有以下命令:
update_datastore_type name engine image_id 用指定的名字更新datastore type ,如果指定的名字不存在,则将新创建,本命令返回UUID 或者 datastore type 的新建或者更新的名字。 update_datastore_version datastore_type name image_id packages active 用指定的名字更新版本, 如果指定的名字不存在,则将新创建,本命令返回UUID 或者 datastore type 版本的新建或者更新的名字。
API规范用户可以列出数据存储管理程序的类型和可用的版本 Datastore types list (New call)请求消息结构tGET /{tenant_id}/datastores应答消息结构{ "id": "73144fc8-f2c5-4490-a2d7-76604c4528dd", "links": [... ], "name": "MongoDB"}{ "id": "e60153d4-8ac4-414a-ad58-fe2e0035704a", "links": [... ], "name": "Mysql"} Show datastore type (New call)请求消息结构tGET /{tenant_id}/datastores/e60153d4-8ac4-414a-ad58-fe2e0035704a应答消息结构{ "id": "e60153d4-8ac4-414a-ad58-fe2e0035704a", "links": [... ], "name": "Mysql"} Datastore type versions list (New call)请求消息结构tGET /{tenant_id}/datastores/e60153d4-8ac4-414a-ad58-fe2e0035704a/versions应答消息结构{ "id": "7d109ae8-d38f-41c8-86e4-a8e613f81be5", "links": [... ], "name": "ubuntu percona-5.5.33"}{ "id": "8ae342fb-19ac-4882-8978-fe1afb38c7c7", "links": [... ], "name": "fedora oracle-5.1.71"}{ "id": "94ed1f9f-6c1a-4d6e-87e9-04ecff37b64b", "links": [... ], "name": "ubuntu maria-10.0.4"} Show version (New call)请求消息结构GET /{tenant_id}/datastores/versions/7d109ae8-d38f-41c8-86e4-a8e613f81be5应答消息结构{ "id": "7d109ae8-d38f-41c8-86e4-a8e613f81be5", "links": [... ], "name": "ubuntu percona-5.5.33"} Create instance with specified datastore type and version (Existing call)请求消息结构POST /instances{"instance" : { "flavorRef" : "2", "name" : "as", "datastore": { "type" : "e60153d4-8ac4-414a-ad58-fe2e0035704a", "version" : "94ed1f9f-6c1a-4d6e-87e9-04ecff37b64b" }, "volume" : { "size" : "1" } }}应答消息结构{ "created": "2013-10-09T10:56:56", "flavor": { "id": "2", "links": [... ] }, "id": "86bb7492-d797-4562-b864-851c8fad7216", "links": [... ], "name": "as", "datastore": { "type": "Mysql", "version": "ubuntu maria-10.0.4" }, "status": "BUILD", "updated": "2013-10-09T10:56:56", "volume": { "size": 1 }} List instances (Existing call)请求消息结构tGET /instances应答消息结构{ "flavor": { "id": "2", "links": [... ] }, "id": "b1f0dff8-6303-4711-9d23-e899abc5d24d", "links": [... ], "name": "as_2", "datastore": { "type": "Mysql" }, "status": "ACTIVE", "volume": { "size": 1 }}{ "flavor": { "id": "2", "links": [... ] }, "id": "be1f10ae-afa9-4f75-808d-f7782784f363", "links": [... ], "name": "as_2", "datastore": { "type": "Mysql" }, "status": "ACTIVE", "volume": { "size": 1 }} l Get instance (Existing call)
请求消息结构tGET /instances/be1f10ae-afa9-4f75-808d-f7782784f363应答消息结构{ "created": "2013-10-08T09:05:45", "flavor": { "id": "2", "links": [... ] }, "id": "be1f10ae-afa9-4f75-808d-f7782784f363", "links": [... ], "name": "as_2", "datastore": { "type": "Mysql", "version": "ubuntu maria-10.0.4" }, "status": "ACTIVE", "updated": "2013-10-08T09:05:52", "volume": { "size": 1 }}
Trove系列(五)—Trove的数据存储管理程序类型和版本管理功能介绍的更多相关文章
- 虚拟化(五):vsphere高可用群集与容错(存储DRS是一种可用于将多个数据存储作为单个数据存储群集进行管理的功能)
vsphere高级功能需要vcenter server和共享存储的支持才能实现.vsphere的高级功能有 vmotion.storage vmotion.vsphere HA.vsphere DRS ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-1.数据信息安全--微信授权一键登录功能介绍
笔记 1.数据信息安全--微信授权一键登录功能介绍 简介:讲解登录方式优缺点和微信授权一键登录功能介绍 1.手机号或者邮箱注册 优点: ...
- Spark RDD概念学习系列之Spark的数据存储(十二)
Spark数据存储的核心是弹性分布式数据集(RDD). RDD可以被抽象地理解为一个大的数组(Array),但是这个数组是分布在集群上的. 逻辑上RDD的每个分区叫一个Partition. 在Spar ...
- 安卓中的数据存储方式以及ContentProvider的简单介绍
1.介绍android的数据存储方式 File存储 sharedPrefrence存储方式 conmtentprovider sqlitedatabase 网络存储 2.请介绍下ContentPr ...
- Solr系列五:solr搜索详解(solr搜索流程介绍、查询语法及解析器详解)
一.solr搜索流程介绍 1. 前面我们已经学习过Lucene搜索的流程,让我们再来回顾一下 流程说明: 首先获取用户输入的查询串,使用查询解析器QueryParser解析查询串生成查询对象Query ...
- Trove系列(三)—Trove的功能管理功能介绍
Trove的功能管理功能Trove的功能管理功能包括给各种不同的版本的 datastore 安装不同的 功能. 本管理功能只适用于激活/去活全系统的功能.唯一例外的是数据存储功能列表功能,该功能对所有 ...
- Android编程中的5种数据存储方式
Android编程中的5种数据存储方式 作者:牛奶.不加糖 字体:[增加 减小] 类型:转载 时间:2015-12-03我要评论 这篇文章主要介绍了Android编程中的5种数据存储方式,结合实例形式 ...
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...
- 【Android开发日记】之入门篇(七)——Android数据存储(上)
在讲解Android的数据源组件——ContentProvider之前我觉得很有必要先弄清楚Android的数据结构. 数据和程序是应用构成的两个核心要素,数据存储永远是应用开发中最重要的主题之一,也 ...
随机推荐
- CSS 让 fontawesome 图标字体变细
一句 CSS 让 fontawesome 图标字体变细 自从 iOS 某个版本发布之后,前端的流行趋势是什么都越来越细…字体越来越细…图标线条也越来越细.而老物 fontawesome 粗壮的线条风格 ...
- SVN服务端安装
1 首先安装SVN和Subversion. 安装文件可自行百度. 2 在服务端创建版本库. 我的安装目录是c:\Program Files(x86)\Subversion. 安装完成后在安装目录下sh ...
- 23种设计模式之代理模式(Proxy)
代理模式是一种对象结构型模式,可为某个对象提供一个代理,并由代理对象控制对原对象的引用.代理模式能够协调调用者和被调用者,能够在一定程度上降低系统的耦合度,其缺点是请求的处理速度会变慢,并且实现代理模 ...
- rpmdb: unable to join the environment的问题解决
今天笔者在Centos 6.3上使用yum安装lsof软件时,报如下错误: [root@ ~]# yum install lsof -y rpmdb: unable to join the envir ...
- java8新特性之Optional类
NullPointException可以说是所有java程序员都遇到过的一个异常,虽然java从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而java设计者也只能是让指针在java ...
- 使用keras导入densenet模型
从keras的keras_applications的文件夹内可以找到内置模型的源代码 Kera的应用模块Application提供了带有预训练权重的Keras模型,这些模型可以用来进行预测.特征提取和 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- compile time - run-time
php.net Class member variables are called "properties". You may also see them referred to ...
- [python-opencv]超大图像二值化方法
*分块 *全局阈值 VS 局部阈值 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape ...
- xss跨站脚本攻击及xss漏洞防范
xss跨站脚本攻击(Cross Site Scripting,因与css样式表相似故缩写为XSS).恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Scrip ...