Nuodb使用

一、NuoDB 介绍:

1NuoDB系统设计目标为了配置、部署和管理一个或多个数据库在一个数据中心或云端。从概念角度NuoDB分三层:

l Management Layer

l SQL Layer

l Data Layer

nuodb数据库有多个进程运行在这些层

NuoDB Domain

Name

Description

NuoDB Domain

集合NuoDB主机一起工作来支持一个或多个NuoDB数据库。  

默认情况下,当你开始NuoDB Broker,Broker定义NuoDB Domain。  

在大多数平台上NuoDB安装程序会自动启动一个Broker在操作系统启动时。

Management Layer

Name

Description

NuoDB Broker

这一进程管理Transaction Engines和Storge Managers,在NuoDB系统中独立于任何特定的数据库。  

默认情况下,当你开始一个broker,broker定义NuoDB domain。

NuoDB Agent

运行在一个特定的主机管理NuoDB进程与NuoDB broker通信了解系统状态

NuoDB Manager

基于文本的实用程序,用于管理NuoDB domain和database的所有方面。

NuoDB Console

一个基于webGUI管理工具,默认情况运行在http://localhost:8080

NuoDB System Tray

GUI工具运行在Mac OSXWindows用于启动NuoDB Console和检查更新。

NuoDB Loader

导入和导出数据的工具

 

SQL Layer

Name

Description

NuoDB Transaction Engine(TE)

提供应用程序访问单个NuoDB数据库。

处理来自客户的请求,缓存数据,协调其他teNuoDB Storage。  

一个最小可行的NuoDB部署必须至少有一个TE运行。此外,一个TE只能作用于一个数据库,但是一个数据库可以有多个TE。

Data Layer

Name

Description

NuoDB Storage Manager(SM)

这一进程提供了数据的持久化,通过写入和管理数据到磁盘。  

处理从TES发送来的请求,同时发送异步消息到其他SM,提交数据到硬盘和维护内存中的副本数据。  

一个最小可行的NuoDB部署必须至少有一个SM运行。此外,每个SM只能维护一个数据库,但是一个数据库可以有多个SM

Archive Directory

NuoDB Storage Manager入数据到磁盘的目录。


2、NuoDB结构:

   NuoDB使用一个独特的体系结构来实现高性能、灵活性、可伸缩性和事物服从。

NuoDB是怎样处理两个事务的情况下,部分数据库由于延迟的网络而被隔离,其中每个事务运行和提交事务前其他的事物能够定义和存在?如何确保Storage Manngers的持久化与当前的数据库保持一致?  

NuoDB架构使得transaction engines在内存中维护一个数据库的副本,和用于storage managers之间以及和transaction engines保持同步。所有NuoDB数据库的元素(数据、索引、元数据和事务状态)保存在一个有各种类型的atoms对象里。原子事务管理器(TMA)在系统中跟踪所有事务的启动事件和提交事件。TMA实例接收和发送消息与其它TMA,TEs和SMs。每个TESM都有一个 TMA实例。

Transaction

NuoDB客户机应用程序在开始一个事物时在一个TE上记录这个启动的事务,个TE送交本地的TE。同样的,当交易完成后,TE记录事务结束事件。所有TEs记录所有的开始和结束事件,使所有事务,在整个数据库可见。  

特定数据库的所有TEs相互通信通过批处理、异步消息;关于事务状态变化的消息不需要确认。当两个独立事务操作时(例如,将值插入不同的表)他们不沟通。

How Conflicts Are Resolved

冲突可能发生在特定的数据,比如试图更新相同的记录,或相同的值插入唯一的索引。如果一个原子的多个副本在流通中有一个冲突,单个原子的实例被指定为atom主席。atom主席充当裁判和解决操作数据的冲突。这种冲突解决的步骤如下:

l 本地记录或索引原子实例发送一个变更请求给记录或索引的atom chairman

l 主席收到变更请求并确定是否有冲突。

l 在这个沟通过程中,每一个变化是停滞不前的。

l 事务线程等待,直到atom chairman响应

l 如果改变不冲突,则事物通过。

Commit protocol:

NuoDB数据库管理员可以设置一个最低水平的耐久性数据库和应用程序开发人员可能需要更高层次的耐久性为特定的应用程序。提交协议被指定为命令行选项。

日志的远程提交协议保证在事务提交之前至少有一个SM有副本的所有事务的变化。下面的列表描述了提交的步骤:

1.事务发出一个提交请求连接到TE(当地TE)

2.当地的TE 发送一个预提交信息给SMs上的TMAs

3.SMs接收一个预提交信息:

l 通过直接I/O刷新它的复制消息日志

l 发送一个CommitACK消息到本地TETMA

4.本地TETMA:

l 接收至少一个“CommitACK”消息

l 发送一个"committed"消息到所有其他TMA

告诉TE它能够响应事物提交成功

因为提交序列性能至关重要,不批处理的消息,但立即寄出。

这个序列保证提交的事务做的所有更改都在持久存储至少在一个地方。如果所有的SMs服务数据库同时失效,在灾难发生前在归档原子中应用日志复制信息保存所有事物的变化。应用程序或数据库带有更高的耐久性要求需要提交协议,这需要从两个SMs接收"commit received"消息。

 

 

二、单机创建数据库:

1、登录到nuodbmgr

nuodbmgr --broker host --password administrator_password

2、创建storage manage

nuodb [domain] > start process sm host localhost database testDB

Process command-line options:

Archive directory: /opt/nuodb/samples/testData

Initialize archive: true 

Started process: ....... [ pid = 9950 ]

2、创建Transaction Engine

nuodb [domain] > start process te host localhost database testDB

Process command-line options: --dba-user dba --dba-password dba

Started process: ...... [ pid = 9961 ] 

3、登录到数据库

nuosql database@localhost --user dba --password dba

SQL> CREATE TABLE t1 (DATA varchar (100), CUR_TIME timestamp default('now'));

SQL> INSERT INTO t1 (DATA) VALUES ('Time of update is:');

SQL> SELECT * FROM t1;

 

 DATA                 CUR_TIME          

 ------------------ -------------------------- 

 Time of update is: 2012-10-09 16:52:49.875664

 

 停止nuodb

 

# Commands to stop NuoDB agent and console services

sudo service nuoagent stop

sudo service nuowebconsole stop

  

# Commands to start NuoDB agent and console services

sudo service nuoagent restart

sudo service nuowebconsole start

 

 

 

 create sequence receivedMessageId start with 1;创建序列

 

create table receivedMessage(receivedMessageId bigint GENERATED ALWAYS AS IDENTITY(receivedMessageId) PRIMARY KEY,

uniqueId string default null,

vendor string default null,

model string default null,

messageHead string default null,

messageInfo string default null,

protocolVersion string default null,

receivedTime timestamp default('now')

);

 

获得序列

select next value for RECEIVEDMESSAGE$IDENTITY_SEQUENCE as receivedMessageId from dual


三、多主机配置

Installation Command

nuodbmgr --broker localhost --password bird --command "apply domain license licenseFile </path/to/your/License_File>"

 

nuodbmgr --broker localhost --password bird --command "show domain license"

 

1、修改default.properties配置

Linux/Mac

$ /opt/nuodb/etc/default.properties

 

WINDOWS

> c:\Program Files\nuodb\etc\default.properties

 

# Host A:

portRange = 48005,48100                   #or port range of your choice

# Save your edits

# Restart the nuoagent service

sudo service nuoagent restart

 

# Host B-C:     

broker = false

peer = <Host_A_IP_ADDRESS>

portRange = 48005,48100                   #or port range of your choice

# Save your edits

# Restart the nuoagent service

sudo service nuoagent restart

 

2、连接NuoDB主机

# By default, the NuoDB installation will automatically start a broker and domain for you.

# The commands contained in this document will use the default password for that domain. 

# Always use the nuodbmgr utility when administering your domain and database from the command line.

 

# Host A:     

nuodbmgr --broker host --password bird

 

3、开启Storage Mannger

# The following command will set Initialize archive to "true".

# This must only be set to "true" the first time the Storage Manager is created otherwise your data will be overwritten.   

    

nuodb [domain]> start process sm 

Database: <DATABASE_NAME>     

Host: <IP_ADDRESS_of_HOST_C>

Process command-line options: --dba-user <NAME> --dba-password <PASSWORD>                   

Archive directory: <PATH_TO_YOUR_DATA_DIRECTORY>   

Initialize archive: true

 

4、开启Transaction Engine

nuodb [domain] > start process te 

Database: <DATABASE_NAME> 

Host: <IP_ADDRESS_of_HOST_B>                 

Process command-line options: --dba-user <NAME> --dba-password <PASSWORD>

启动控制台




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值