`
markhe
  • 浏览: 6449 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

公开一个云计算和云存储的源代码

 
阅读更多
1) Versant数据库可以直接支持复杂的业务模型:

public class Person {

String firstName;

String lastName;

String gender;

String ethnicity;

String language;

// 新增的节点

int index = 5;

Contact info;

Location location;

public String primaryCountry;

public String primaryAreaCode;

HashSet<Person> friends = new HashSet<Person>();

HashSet<Person> colleagues = new HashSet<Person>();

HashSet<Person> family = new HashSet<Person>();

HashSet<Person> relations = new HashSet<Person>();

}

Versant数据库可以直接支持包括HashSet、LinkedList在内的复杂数据结构。


2)Versant数据库可以直接支持复杂的对象间的关系

如下的代码中展示了一个两层的关系结构。

public void addFriend( Person p ){

friends.add(p);

addRelation(p);

p.getFriends().add(this);

}


3)Versant数据库可以很容易的建立和数据库之间的连接:

Iterator<DatabaseLoginHelper> ite = this.dblist.iterator();

DatabaseLoginHelper helper = (DatabaseLoginHelper)ite.next();

session = new TransSession(helper.getDatabaseNodeProperty());

session.setSchemaOption(TransSession.SCHEMA_ADD_DROP_ATTRIBUTES);

// System.out.println("Define Logical database:");

session.newLogicalDatabase(HPC_DEMO_NETWORK_NAME);

// System.out.println("Add to logical database:"+dbList[0]);

session.addToLogicalDatabase(HPC_DEMO_NETWORK_NAME, helper.databaseName);

System.out.println("Add to logical database:" + helper.databaseName);


4)Versant数据库可以很容易地创建对象,并保存到数据库中。

TransSession session = DistributedDatabaseManager.getInstance()

.createNewSession();

session.setDefaultDatabase("dbnodeb");

// TransSession session = new TransSession("dbnodea");

/**

* generate 500 random objects

*/

for (int i = 0; i < 1500; i++) {

Person person = new Person();

person.setFirstName("TFistName" + i);

person.setLastName("TListName" + i);

// set storage schema

DistributedDatabaseManager.getInstance()

.setRoundRobinPersistentSchema();

session.makePersistent(person);

session.commit();

}

System.out.println("Demo data generated.");

session.commit();

上面的例子中,可以实现自动将数据对象配载到分布式数据库的不同节点中。


5)创建复杂的对象关联,在Versant数据库中也非常容易,可以直接理解为内存对象的操作。

public void createKnownPerson() {

TransSession session = DistributedDatabaseManager.getInstance()

.createNewSession();

session.setDefaultDatabase("dbnodeb");

Person personA = new Person();

personA.setFirstName("AAF1");

personA.setLastName("AAL1");

Person personB = new Person();

personB.setFirstName("BBF1");

personB.setLastName("BBL1");

personB.addFriend(personA);

Person personC = new Person();

personC.setFirstName("CCF1");

personC.setLastName("CCL1");

personC.addFriend(personB);

Person personD = new Person();

personD.setFirstName("DDF1");

personD.setLastName("DDL1");

personD.addFriend(personC);

session.makePersistent(personA, "dbnodea");

session.makePersistent(personB, "dbnodeb");

session.makePersistent(personC, "dbnodea");

session.makePersistent(personD, "dbnodeb");

System.out.println("Special Test Data created.");

session.commit();

}


6)Versant数据库的对象查询

Versant数据库可以支持SQL查询和NOSQL查询两种模式,以下为SQL查询的例子:

TransSession session = DistributedDatabaseManager.getInstance()

.createNewSession();

VQLQuery q = new VQLQuery(

session,

DistributedDatabaseManager.getInstance().HPC_DEMO_NETWORK_NAME,

"select selfoid from com.versant.domain.Person where firstName='AAF1' and lastName='AAL1'");

//"select * from com.versant.domain.Person");

System.out.println("About to execute query, and load root object.");

VEnumeration results = q.execute();

// 创建已经走过的朋友路径,避免回环

System.out

.println("--------------------------------------------------------------------------");


7)Versant数据库的对象查询

Versant数据库可以支持SQL查询和NOSQL查询两种模式,以下为在查到第一个目标对象,之后采用NOSQL方式,自动执行朋友圈子遍历的例子:

VQLQuery q = new VQLQuery(

session,

DistributedDatabaseManager.getInstance().HPC_DEMO_NETWORK_NAME,

"select selfoid from com.versant.domain.Person where firstName='AAF1' and lastName='AAL1'");

//"select * from com.versant.domain.Person");

System.out.println("About to execute query, and load root object.");

VEnumeration results = q.execute();

// 创建已经走过的朋友路径,避免回环

System.out

.println("--------------------------------------------------------------------------");

long middleTime = System.currentTimeMillis();

HashSet<Person> friendSet = new HashSet<Person>();

if (results.hasMoreElements()) {

Person person = (Person) results.nextElement();

friendSet.add(person);

System.out.println("Start Person found:" + person.getFirstName()

+ "/" + person.getLastName()

+ ", about to print friend path.");

Iterator ite = person.getFriends().iterator();

System.out.print("<<<  -> " + person.getFirstName() + "/"

+ person.getLastName());

while (ite.hasNext()) {

Person aFriend = (Person) ite.next();

if (!inFriendCircle(aFriend, friendSet)) {

System.out.print("--> " + aFriend.getFirstName() + "/"

+ aFriend.getLastName());

printFriendPath("--> ", aFriend, friendSet);

}

}

System.out.println("  >>>");

} else {

System.out.println("No root person found.");

}

long endTime = System.currentTimeMillis();
分享到:
评论

相关推荐

    开源云计算管理平台软件介绍

    4. **多集群配置**:允许将多个具有不同内部网络地址的集群配置到同一个云环境中,从而实现了更灵活的资源管理和调度。 #### 三、Eucalyptus的架构 Eucalyptus的架构主要包括五个核心组件,这些组件之间通过具有WS...

    云计算基础架构-linux系统.pptx

    最后,由于源代码公开,安全研究人员可以更深入地查找并修复潜在的安全漏洞,从而提高了系统的安全性。 Linux系统的诞生与Linux之父Linus Torvalds密切相关,他在1991年还是芬兰赫尔辛基大学的学生时,为了个人兴趣...

    在云计算中基于区块链的可验证和动态多关键词可搜索加密方案

    通过区块链,每个搜索请求和响应都可以被记录在链上,形成一个公开的、可审计的记录。这增加了服务提供者的责任和用户的信任度,同时,通过智能合约,可以自动执行一些预定义的规则,例如数据访问权限控制。 在...

    OpenStack系列公开课1-两小时玩转OpenStack

    OpenStack是一个开源的云计算平台项目,旨在为公共和私有云提供易于部署、扩展和使用的开源云计算软件。它最初由美国国家航空航天局(NASA)和Rackspace联合发起,是一个全球性的开源协作项目,拥有庞大的开发者社区...

    微软公有云windows Azure 教程

    总的来说,这个“微软公有云Azure教程”全面介绍了Azure的基础知识、使用方法以及选择Azure的原因,对于希望在云计算领域深耕,特别是想利用Azure服务的个人和企业来说,是一份宝贵的参考资料。通过深入学习,用户...

    ASP.NET百度权重,alexa排名,google page rank,google收录,百度收录和百度快照查询源代码.rar

    虽然现在PageRank公开更新已停止,但它仍然是Google搜索算法中的一个重要组成部分。 4. **Google收录**:Google会抓取并索引互联网上的网页,"Google收录"指的是Google数据库中包含的网页数量。被Google收录的页面...

    CCSK练习题200道及答案

    1. **混合云部署模型**:混合云是一种云计算模型,它结合了私有云和公有云的特点,允许数据和应用程序在两者之间流动。这种模型使得组织能够利用公有云的可扩展性和灵活性,同时保持对敏感数据的控制和管理。 2. **...

    免费云转码全开源.zip

    免费云转码可能有限制,如转码时间、存储空间或带宽,但对于小规模的视频处理需求,它们是一个经济实惠的选择。 5. **全开源终版**: "全开源终版"可能指的是这个项目的最终稳定版本,意味着它的功能已经完善,且...

    毕设&课程作业_智能云备份系统.zip

    综上所述,【毕设&课程作业_智能云备份系统.zip】是一个融合了毕业设计与课程实践的项目,它涉及到云计算、人工智能和系统开发等多个IT领域的知识点。通过这个项目,我们可以学习到如何构建一个实用的云备份系统,...

    云计算大作业使用Hadoop对美国新冠肺炎疫情数据分析项目.zip

    Hadoop是一个开源的大数据处理框架,由Apache软件基金会维护,它能够处理和存储PB级别的数据,具有高度分布式和容错性,非常适合大规模数据分析任务。在这个项目中,我们可以深入学习Hadoop的MapReduce编程模型以及...

    PyPI 官网下载 | s3like-1.2.0.tar.gz

    描述中的“资源来自pypi官网,资源全名:s3like-1.2.0.tar.gz”再次确认了该软件包的来源和名称,强调了它是一个公开可获取的Python库。 标签中提到的“zookeeper 分布式 云原生 cloud native Python库”揭示了`s3...

    云端猎手公海搜客小程序v1.1.8+前端

    7. **源码发布**:"小程序源码"标签意味着这个压缩包可能包含了小程序的完整源代码,对于开发者而言,这是一个学习和定制的宝贵资源。通过查看源码,开发者可以了解其内部工作原理,对功能进行扩展或修改,以适应...

    PyPI 官网下载 | prospector-0.9.9.tar.gz

    `prospector-0.9.9.tar.gz`是该软件包的特定版本,这里是一个tarball文件,一种常见的压缩格式,用于存储多个文件或目录,便于传输和存储。 **Prospector 库** `Prospector`是Python的一个静态分析工具,它旨在...

    开源的系统

    开源系统也促进了云计算的发展,例如OpenStack,这是一个开源的云计算平台,用于构建私有云和公有云。OpenStack提供了多种服务,如计算、存储、网络资源的管理和控制。 开源生态系统还包括各种编程语言,如Python、...

    TogetherGO:河南财经政法大学“华为云”软件比赛,“校园GO”协作源代码

    这意味着参赛团队不仅设计并实现了软件功能,还公开了他们的源代码,供其他人学习、审查和改进,体现了开源软件的精神。这种开放源代码的做法通常有利于促进技术交流,提升软件质量,也有助于培养学生的协作能力和...

    PyPI 官网下载 | iomed-0.0.7.tar.gz

    综上所述,`iomed`是一个基于Python的云原生分布式库,可能涉及Zookeeper的使用,适用于需要分布式协调和云环境部署的场景。用户可以通过PyPI下载到0.0.7版本的源代码包,解压后进行安装和进一步探索其功能和用法。...

    dasein-cloud-google-2014.05.2.zip

    6. **开源软件**:公开源代码的软件,鼓励社区协作和持续改进。 7. **Git版本控制**:用于跟踪和管理软件开发过程中的版本变化,"master"分支是主要的开发分支。 8. **源码管理**:包括源代码组织结构、构建流程以及...

    PyPI 官网下载 | pyramid_oereb-1.2.4.dev20181217.tar.gz

    这个压缩包文件名为pyramid_oereb-1.2.4.dev20181217.tar.gz,包含了该库的所有源代码和相关资源。 首先,我们来看看Pyramid框架。Pyramid是一个轻量级且高度灵活的Python web开发框架,允许开发者用Python编写从...

    new open source cloud computer architecture

    用户可以根据自身需求调整和优化系统,同时,由于源代码公开,社区可以共同发现和修复问题,提高软件质量。 2. **EC2兼容性**:这种兼容性意味着用户可以使用同样的命令行工具、SDK和自动化脚本来控制开源云服务,...

Global site tag (gtag.js) - Google Analytics