使用面向对象数据库实现SNS社区的云服务---找朋友链的JAVA代码
面向对象编程的实际应用案例

面向对象编程的实际应用案例面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它将数据与操作数据的方法组合成对象,并通过对象之间的交互来实现程序的功能。
面向对象编程已经广泛应用于软件开发领域,为开发人员提供了一种灵活且可扩展的方式来构建复杂的应用程序。
本文将介绍一些面向对象编程的实际应用案例,帮助读者更好地理解和应用面向对象编程的概念和技术。
1. 银行账户管理系统银行账户管理系统是一个经典的面向对象编程应用案例。
在这个系统中,我们可以将每个客户的银行账户建模为一个对象,每个对象都包含客户姓名、账户余额等属性,并提供了存款、取款、查询余额等方法来操作账户。
通过面向对象编程的方式,我们可以方便地对每个账户进行管理和操作,同时也可以灵活地扩展系统功能,如添加转账、冻结账户等操作。
2. 地图导航应用面向对象编程也广泛应用于地图导航应用中。
在这种应用中,地图可以被视为一个对象,而每个地点可以被看作是地图上的一个点对象。
通过将地图和地点建模为对象,我们可以轻松地实现路径规划、距离计算、交通状况查询等功能。
另外,我们还可以将导航功能与其他对象进行结合,比如将实时交通状况数据对象与地图对象结合起来,使得导航系统可以根据实时交通情况进行路径优化和导航提示。
3. 游戏开发面向对象编程在游戏开发领域有广泛的应用。
游戏中的角色、道具、场景等可以被建模为对象,每个对象都有自己的属性和行为。
通过面向对象编程的方式,我们可以对游戏中的各个对象进行建模,实现角色的移动、攻击、受伤等行为,并方便地对游戏进行扩展和修改。
另外,面向对象编程还能够帮助游戏开发者组织和管理游戏中的各种资源,如纹理、音效、动画等。
4. 软件模拟面向对象编程也广泛应用于软件模拟领域。
例如,我们可以使用面向对象编程的方式来建模和模拟现实世界中的各种系统,如交通系统、气象系统等。
通过将现实世界的实体和行为抽象为对象,我们可以轻松地进行系统仿真和预测。
Java实现搜索功能代码详解

Java实现搜索功能代码详解⾸先,我们要清楚搜索框中根据关键字进⾏条件搜索发送的是Get请求,并且是向当前页⾯发送Get请求//⽰例代码请求路径为当前页⾯路径 "/product"<!-- 搜索框 get请求根据商品名称的关键字进⾏搜索--><form action="/product" class="form-inline pull-left" ><input type="text" name="productName" placeholder="商品名称" class="form-control" value="${param.productName}"><button class="btn btn-primary"><i class="fa fa-search"></i></button></form>当我们要实现多条件搜索功能时,可以将搜索条件封装为⼀个Map集合,再根据Map集合进⾏搜索Controller层代码:@GetMapping("/product")public String list(@RequestParam(required = false,defaultValue = "1",name = "p")Integer pageNo,@RequestParam(required = false,defaultValue = "")String productName,@RequestParam(required = false,defaultValue = "")String place,@RequestParam(required = false,defaultValue = "")Integer typeId,@RequestParam(required = false,defaultValue = "")BigDecimal minPrice,@RequestParam(required = false,defaultValue = "")BigDecimal maxPrice,Model model) {Map<String,Object> searchParam = new HashMap<>();searchParam.put("productName",productName);searchParam.put("place",place);searchParam.put("typeId",typeId);searchParam.put("minPrice",minPrice);searchParam.put("maxPrice",maxPrice);PageInfo<Kaola> pageInfo = kaolaService.findByPageNo(pageNo,searchParam);model.addAttribute("pageInfo",pageInfo);return "product/list";}业务层代码:public PageInfo<Kaola> findByPageNo(Integer pageNo, Map<String, Object> searchParam) {PageHelper.startPage(pageNo,10);List<Kaola> kaolaList = kaolaMapper.findBySearchParamWithType(searchParam);return new PageInfo<>(kaolaList);}MyBatis中的mapper.xml:<select id="findBySearchParamWithType" resultType="com.kaishengit.entity.Kaola">SELECTkaola.*, kaola_type.id AS 'kaolaType.id',kaola_type.type_name AS 'kaolaType.typeName',parent_id AS 'kaolaType.parentId'FROMkaolaINNER JOIN kaola_type ON kaola.type_id = kaola_type.id<where><if test="productName != null and productName != ''">kaola.product_name LIKE concat('%',#{productName},'%')</if><if test="place != null and place != ''">and kaola.place = #{place}</if><if test="typeId != null and typeId != ''">and kaola.type_id = #{typeId}</if><if test="minPrice !=null and minPrice != ''"><![CDATA[ and kaola.price >= #{minPrice} ]]></if><if test="maxPrice !=null and maxPrice != ''"><![CDATA[ and kaola.price <= #{maxPrice} ]]></if></where>ORDER BY kaola.id DESC</select>这样,就可以从前端到后端实现多条件搜索功能了。
常见的面向对象数据库

常见的面向对象数据库
常见的面向对象数据库包括:
1. PostgreSQL:PostgreSQL是一个开源的对象-关系数据库,支持许多面向对象的功能,如继承和类型强制。
2. Oracle Database:Oracle Database是一个商业的、功能丰富的数据库,支持面向对象编程,包括封装、继承和多态性等。
3. DB2:DB2是IBM的一个关系数据库产品,也支持面向对象的编程特性。
4. SQL Server:虽然SQL Server主要是一个关系数据库,但通过使用一些扩展功能,如用户定义类型和存储过程,也可以实现面向对象的编程。
5. SQLite:SQLite是一个轻量级的数据库,也支持面向对象的编程特性,尽管它可能不如上述数据库那么强大或全面。
这些数据库各有特点和优势,选择哪一个取决于具体的需求和环境。
java resttemplate用法

java resttemplate用法使用Java RestTemplate进行API请求的用法在Java开发中,我们经常需要与各种API进行通信。
要实现API请求,我们可以使用RestTemplate。
RestTemplate是Spring框架提供的一个HTTP客户端,它简化了向API发送HTTP请求和处理响应的过程。
RestTemplate提供了多种HTTP方法(GET、POST、PUT、DELETE等),并支持请求和响应的定制化设置。
下面将介绍使用RestTemplate发送GET和POST 请求的示例。
首先,我们需要添加RestTemplate的依赖。
我们可以通过Maven在项目中引入以下依赖:```xml<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>```接下来,我们可以在代码中创建一个RestTemplate实例,并使用它发送HTTP 请求。
1. 发送GET请求:```javaRestTemplate restTemplate = new RestTemplate();String url = "https:///users/{id}";Map<String, String> params = new HashMap<>();params.put("id", "123");User user = restTemplate.getForObject(url, User.class, params);```在上面的示例中,我们使用RestTemplate的`getForObject`方法发送了一个GET 请求,并将响应映射为一个User对象。
Java面向对象编程基础教程

Java面向对象编程基础教程Java是一种广泛应用于软件开发的编程语言,具有强大的面向对象编程功能。
本文将通过分点介绍Java面向对象编程的基础知识,包括类和对象、继承和多态、封装和抽象等方面。
1. Java中的类和对象:- 类是Java中面向对象编程的基本概念,它是对象的模板或蓝图。
一个类可以包含属性(成员变量)和方法(成员函数)。
- 对象是类的实例,通过关键字“new”可以创建对象。
每个对象都有自己的状态和行为。
2. 成员变量和成员函数:- 成员变量是类中定义的变量,用于表示对象的状态。
可以根据需要设置不同的访问修饰符(public、private、protected)来控制其可见性。
- 成员函数是类中定义的函数,用于表示对象的行为。
通过对象调用成员函数来执行相应的操作。
3. 构造函数:- 构造函数是特殊的成员函数,在创建对象时被调用,用于初始化对象的状态。
构造函数的名称必须与类名相同。
- Java中可以定义多个构造函数,它们可以有不同的参数列表,称为重载。
4. 继承和多态:- 继承是Java面向对象编程的重要特性,通过继承,一个类可以派生出一个或多个子类。
子类可以继承父类的属性和方法,同时可以增加自己特有的属性和方法。
- 多态是指同一个方法在不同的对象上具有不同的行为。
通过方法的重写和重载可以实现多态性。
5. 封装和访问控制:- 封装是一种将数据和方法组合在一起的机制,通过封装可以隐藏数据的具体实现细节。
通过关键字“private”可以设置成员变量的访问权限,只允许类内部访问。
- 通过“get”和“set”方法可以实现对私有成员变量的访问,同时可以对数据进行验证和控制。
6. 抽象类和接口:- 抽象类是一种不能被实例化的类,用于定义子类必须实现的方法。
抽象类可以包含抽象方法,抽象方法只有声明没有实现。
- 接口是一种完全抽象的类,用于定义一组方法的规范。
一个类可以实现一个或多个接口,实现接口的类必须实现接口中定义的所有方法。
Java面向对象编程实战案例

Java面向对象编程实战案例1. 简介Java面向对象编程(Object-Oriented Programming,OOP)是一种常用的编程范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。
本文将介绍一些实战案例,展示Java面向对象编程的实际应用。
2. 案例一:学生管理系统学生管理系统是一个典型的Java面向对象编程案例,它常用于学校、培训机构等管理学生信息。
在这个案例中,可以定义一个Student类,包含学生的姓名、年龄、学号等属性,以及学生的增删改查等方法。
可以使用面向对象的思想,将学生信息封装到一个对象中,并使用集合类来管理多个学生对象。
3. 案例二:图形计算器图形计算器是另一个有趣的Java面向对象编程案例。
可以定义一个Shape类作为图形的基类,包含计算图形面积和周长的方法,并派生出Circle、Rectangle和Triangle等子类,分别表示圆形、长方形和三角形。
通过面向对象的继承特性,可以调用对应子类的计算方法,根据用户的输入来计算所需图形的面积和周长。
4. 案例三:银行账户管理系统银行账户管理系统是一个常见的Java面向对象编程案例,用于管理银行的账户信息。
可以定义一个Account类,包含账户的姓名、余额、存取款等方法,并通过封装特性将账户信息隐藏在对象中。
可以使用ArrayList类来存储多个账户对象,实现对账户信息的管理和操作。
5. 案例四:图书馆管理系统图书馆管理系统是另一个典型的Java面向对象编程案例,用于管理图书馆的图书信息。
可以定义一个Book类,包含图书的书名、作者、价格等属性,并封装对应的get和set方法。
可以使用HashMap类来存储图书编号和对应的图书对象,实现图书的检索和借还功能。
还可以定义一个User类表示图书馆的用户,包含用户的姓名、借书数量等属性。
6. 案例五:游戏角色管理系统游戏角色管理系统是一个有趣的Java面向对象编程案例,用于管理游戏中的角色信息。
如何使用Java实现面向对象编程

如何使用Java实现面向对象编程Java是一种常用的编程语言,以其面向对象的特性而闻名。
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序中的数据和操作数据的代码封装到对象中。
本文将介绍如何使用Java实现面向对象编程。
一、面向对象编程的基本概念面向对象编程的基本概念包括封装、继承和多态。
封装指的是将数据和操作数据的方法封装到一个类中,通过访问修饰符来控制数据的访问权限。
继承指的是通过创建一个新的类来继承现有类的属性和方法。
多态指的是同一个方法可以在不同的对象上具有不同的行为。
二、创建类和对象在Java中,使用关键字"class"来创建一个类,一个类可以包含属性和方法。
通过关键字"new"可以创建一个对象,对象是类的实例化。
下面是一个创建类和对象的示例代码:```public class Car {String color;int maxSpeed;void drive() {System.out.println("Driving at max speed: " + maxSpeed);}public class Main {public static void main(String[] args) {Car myCar = new Car();myCar.color = "Red";myCar.maxSpeed = 200;myCar.drive();}}```三、继承和多态通过继承,一个类可以获得另一个类的属性和方法。
在Java中,使用关键字"extends"来实现继承。
下面是一个继承的示例代码:```public class SportsCar extends Car {void turboBoost() {System.out.println("Turbo boost activated!");}public class Main {public static void main(String[] args) {SportsCar myCar = new SportsCar();myCar.color = "Blue";myCar.maxSpeed = 300;myCar.drive();myCar.turboBoost();}}```多态能够让一个方法在不同的对象上具有不同的行为。
Java数据库连接代码

Java数据库连接代码Java数据库连接代码集合Java数据库连接接口(JDBC)是Java里定义的一套用于数据库连接和操作的API的集合。
下面一起跟着店铺深入了解一下吧!有不同的数据库厂商提供这套接口的实现类,对于Java程序员来说,程序员不需要关心数据库的底层的实现,统一的调用JDBC里面的抽象出来的API来完成数据库的访问功能,在Data access的功能和接口定义中,Java是在别的语言对数据库的URL的描述,其他的`一切也就是通过统一的调用来实现了,本文章手机了主要的数据库厂商提供的Driver和URL,以便大家方便的对各种数据库进行连接的操作。
JDBC里统一的使用方法:Class.for(jdbcDriverName);Connectionconn=DriverManager.getConnection(url,user,password);这里的接口是统一的,不同的是每种数据库提供的jdbcDriver和URL不同。
MySQL:String Driver="com.mysql.jdbc.Driver"; //驱动程序String URL="jdbc:mysql://localhost:3306/db_name"; //连接的URL,db_name为数据库名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).new Instance();Connectioncon=DriverManager.getConnection(URL,Username,Password);Microsoft SQL Server 2.0驱动(3个jar的那个):StringDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接SQL数据库的方法StringURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =db_name"; //db_name为数据库名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).new Instance(); //加载数据可驱动Connectioncon=DriverManager.getConnection(URL,UserName,Password); //Microsoft SQL Server 3.0驱动(1个jar的那个):// 老紫竹完善StringDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; //连接SQL数据库的方法StringURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName =db_name"; //db_name为数据库名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).new Instance(); //加载数据可驱动Connectioncon=DriverManager.getConnection(URL,UserName,Password); //Sysbase:String Driver="com.sybase.jdbc.SybDriver"; //驱动程序String URL="jdbc:Sysbase://localhost:5007/db_name"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connectioncon=DriverManager.getConnection(URL,Username,Password);Oracle(用thin模式):String Driver="oracle.jdbc.driver.OracleDriver"; //连接数据库的方法String URL="jdbc:oracle:thin:@loaclhost:1521:orcl"; //orcl为数据库的SIDString Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance(); //加载数据库驱动Connectioncon=DriverManager.getConnection(URL,Username,Password);PostgreSQL:String Driver="org.postgresql.Driver"; //连接数据库的方法String URL="jdbc:postgresql://localhost/db_name"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connectioncon=DriverManager.getConnection(URL,Username,Password);DB2:String Driver="com.ibm.db2.jdbc.app.DB2.Driver"; //连接具有DB2客户端的Provider实例//String Driver=".DB2.Driver"; //连接不具有DB2客户端的Provider实例String URL="jdbc:db2://localhost:5000/db_name"; //db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connectioncon=DriverManager.getConnection(URL,Username,Password);Informix:String Driver="rmix.jdbc.IfxDriver";String URL="jdbc:Informix-sqli://localhost:1533/db_name:INFORMIXSER=myserver";//db_name为数据可名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connectioncon=DriverManager.getConnection(URL,Username,Password);JDBC-ODBC:String Driver="sun.jdbc.odbc.JdbcOdbcDriver";String URL="jdbc:odbc:dbsource"; //dbsource为数据源名String Username="username"; //用户名String Password="password"; //密码Class.forName(Driver).newInstance();Connectioncon=DriverManager.getConnection(URL,Username,Password);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用面向对象数据库实现SNS社区的云服务---实时找朋友链的JAVA代码版本:DRAFT编制:Versant中国2012 年05月Versant China上海市昆明路572号B区415-419室邮箱: info@电话: (021) 5172 1968传真: (021) 5172 1967网址: P 001P 0021 背景(Background )现有关系型数据库中,对系统容错以及分布式处理两个环节在技术实现层面都存在较为明显的不足。
与此对应,Versant 对象数据库本身由于是下一代数据库,因此在上述各方面有较为明显的优势。
本案例就以SNS 网络应用中,在关系图中找朋友的应用案例为参考,从分布式数据库和系统容错两个角度,对Versant 的技术特性以及其所能够为应用提供的具体能力进行了说明。
本案例基于Versant HPC Demo 2010(High Performance Computing Demo )的源代码,要获得相应的源代码,请发送邮件给support@ 。
2 分布式找朋友案例应用场景描述(Senario of Finding Friends )为描述问题清楚起见,我们建立了一个在互连网络的社交应用中找朋友的案例。
该案例的业务以及网络环境可以描述如下:z 假设某游戏运营商在两个城市上运行着一个分布式的社交网络。
每一个注册用户都有自己的好友列表。
两个城市分别是City A 和City B 。
对于用户而言,城市只是一个属性,用户可以跨城市寻找其它用户,并将其加为自己的好友。
也就是说,城市对于用户来说是完全透明的。
z 假设该运营商提供一个找朋友的服务,它能够根据用户输入的两个用户名,找到二者之间通过哪些朋友可以相互认识,或者二者之间相互是根本不认识的。
U2U3U5U6找朋友的核心目标是在如上的结构图中,找到U1ÆU2ÆU5ÆU7这样的路径。
实际的业务困难是:1)关系型数据库无法支持分布式数据库,尤其是对于跨节点的数据引用方面,现有关系型数据库无法建立跨数据库的外键,需要应用来自行解决不同数据库节点的数据库链接、数据对象拼装以及一致性校验工作。
2)关系型数据库的容错往往存在不足之处,无法保证系统的稳定运行。
3 分布式找朋友的Versant数据库网络组网结构在找朋友应用案例背景下,Versant可以实现基于分布式架构的,同时每一个节点都采用FTS服务进行热备的服务。
也就是对应用而言,首先看到的是一个分布式数据库网络,这个数据库网络虽然可能由若干个节点构成,但是对于应用而言,只需要按照一个节点进行处理即可。
具体的数据分布方式对于应用而言是隐藏的。
而从建立一个稳固的数据库网络角度出发,分布式数据库网络中的每一个节点都可以通过Versant Fault Tolerant Service进行容错支持。
V/FTS采用的是完全同步执行的方式,其优势是容错服务不仅仅可以由两台主机构成,而且还可以由多台主机构成。
同时,容错服务的不同主机可以运行在不同操作系统的服务器上,一台机器的失效对于应用而言是完全透明的。
以下是具体的应用场景的组网结构说明:z假设该游戏运营商在位于同一骨干网络上的两个城市的IDC机房中建立了服务器机群,为找朋友的应用提供服务。
机房名分别是IDC A(位于City A)和IDC B(位于City B)。
z在两个机房中分别有两组服务器,分别运行着Versant数据库服务器和应用服务器(找朋友应用程序)。
两组机房服务器的Versant数据库服务器按分布式网络构建。
也就是对于应用而言,两个节点(Node A和Node B)的数据是透明的。
在每一个Versant数据库节点中,都由两台Versant FTS服务器构成。
其中每一组Versant FTS服务都分别位于两个IDC节点中,并最终形成交叉互备方案(两服务器矩阵为[Server A1,Server A2], [Server B1,Server B2])。
其中,Node A以IDC A为主节点,为City A提供服务;Node B以IDC B为主节点,为City B提供服务。
z分别有两组客户端(Client A和Client B)连接到到Node A和Node B。
整个场景的物理结构图可以如下图所示:P 003P 004图表 1找朋友案例的组网结构图其中,详细的组网服务器结构可以如下图所示:表格 1找朋友案例设备环境组网应用服务器端(Server A1,A2,B1,B2,共计4台)操作系统Windows 2003 Server内存(每台) 2G 或以上 CPU志强 3.0GHz 或以上磁盘 20GB 或以上数据库Versant Object Database 8.0.1Windows 32 BitIP 192.168.0.1 ~ 192.168.0.4客户端(Client A ,B ,共计2台)操作系统Windows XP内存(每台) 1G或以上CPU 志强 2.0GHz或以上磁盘 5GB或以上JDK Sun JDK 6或以上192.168.0.11/InstallSource/jdk-6u10-rc2-~IP 192.168.0.10bin-b32-windows-i586-p-12_sep_2008.exe4 分布式找朋友案例部署方案4.1 环境部署方案本样例应用的基础环境部署方案如下:z客户机:主机名:VSNT_TST_CLT1,VSNT_TST_CLT2对应VM目录:Windows_XP_ClientMachineIP:192.168.0.10JDK安装:源文件:/InstallSource/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe安装路径:C:\Program Files\Java\jdk1.6.0_10Tomcat安装:源文件:/InstallSource/japache-tomcat-6.0.20.exe安装路径:D:\Tomcat6服务端口:8080Admin口令:adminz服务器机A1,A2,B1,B2安装:主机名:VSNT_SRV_A1,VSNT_SRV_A2,VSNT_SRV_B1,VSNT_SRV_B2P 005对应VM目录:Windows2003_SRV_A1VOD安装:源文件:/InstallSource/VOD8.0.1.0_221_Windows_32bit.zip (VOD8.0.1.0_221_Windows_32bit.exe)安装路径:C:\Versant\8,数据库路径:C:\Versant\db4.2 数据库部署方案z服务器机A1数据库创建:数据库名:dbnodeadbapassword: versantsecure storage password: versant客户端用户:nodeuser;密码:nodeuser数据库存储路径:C:\Versant\db\dbnodea容错服务器在A2数据库上,具体过程参见章节4.3。
z服务器机A2 数据库创建:数据库名:dbnodeadbapassword: versantsecure storage password: versant客户端用户:nodeuser;密码:nodeuser数据库存储路径:C:\Versant\db\dbnodea容错服务器在B2数据库上,具体过程参见章节4.3。
4.3 数据库建库过程数据库创建脚本:1)安装Versant数据库P 006在所有四个物理服务器上安装Versant对象数据库,默认安装路径:C:\Versant其中,VSNT_SRV_A1上创建一个独立的数据库网络,VSNT_SRV_A2,VSNT_SRV_B1和VSNT_SRV_B2在创建时都加入到VSNT_SRV_A1所创建的数据库网络中。
此时,会形成一套完整的数据库实例系统。
所有数据库在创建时可以保证其DB-ID不同,从而可以直接适用于后面的框架。
2)创建节点A1的数据库dbnodea>makedb dbnodea>dbuser -add -n nodeuser -passwd nodeuser -role DBA dbnodea其中关键参数:dbapassword: versantsecure storage password: versant(这两个参数是在V/MC中进行配置的。
)192.168.0.50> makedb dbnodea192.168.0.50> createdb dbnodea要先启动并停止dbnodea,否则在执行的时候会报错。
因为V/FTS首先认为要复制的数据库应该是一个可用的数据库。
192.168.0.50> dbinfo -d dbnodea修改192.168.0.50上的数据库dbnodea的状态为:DBA-only multi-connection mode192.168.0.50> dbuser -add -n nodeuser -passwd nodeuser -role DBA dbnodea3)创建节点A2的数据库dbnodea192.168.0.51> makedb -g dbnodea此时需要保证在51机器上,所生成的新数据dbnodea的db-id和50机器上所生成的dbnodea的db-id不相同。
而如果第一步执行正确,则Versant数据库网络会保证该步骤正确。
4)创建节点A1,A2的数据库容错对(Pair)P 007192.168.0.50> creatrep -i dbnodea@localhost dbnodea@VSNT_SRV_A2此时容错服务可以在V/MC Versant管理中心上看到具体的配置已经生效。
大致的界面图如下图所示:图表 2在V/MC上的容错对的监控5)创建节点B1的数据库dbnodeb在安装时,选择Database Network Identifier Node为VSNT_SRV_A1。
192.168.0.52> makedb dbnodeb192.168.0.52> createdb dbnodeb要先启动并停止dbnodeb,否则在执行的时候会报错。
因为V/FTS首先认为要复制的数据库应该是一个可用的数据库。
192.168.0.52> dbinfo -d dbnodea192.168.0.52> dbuser -add -n nodeuser -passwd nodeuser -role DBA dbnodeb6)创建节点B2的数据库dbnodebP 008192.168.0.53> makedb -g dbnodeb此时需要保证在51机器上,所生成的新数据dbnodea的db-id和50机器上所生成的dbnodea的db-id不相同。