博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hubble和mongo做站内搜索
阅读量:5322 次
发布时间:2019-06-14

本文共 3828 字,大约阅读时间需要 12 分钟。

一、安装hubble.net(安装后会自动开启一个hubble.net的服务,)

二、首先是hubble.net的升级(目前hubble提供的版本都没有直接带有mongoAdapter)

 首先 我们暂停hubble.net服务

 其次 从hubble的官网http://hubbledotnet.codeplex.com/上面下载源代码进行编译。我的源代码下载到D:\软件\Hubble.Net\中了,解压后找到c#文件夹(D:\软件\Hubble.Net\hubbledotnet-100319\C#)找到c#文件夹中的src文件夹D:\软件\Hubble.Net\hubbledotnet-100319\C#\src,对解决方案进行编译(以release方式进行编译)。

 再次 回到c#文件夹,找到bin文件夹下的D:\软件\Hubble.Net\hubbledotnet-100319\C#\Bin\Release文件夹,将其中的所有文件复制,复制到我们安装目录下的default文件夹下,并全部选择覆盖。

 最后 开启服务,打开我们的hubble.net 就会发现我们的hubble上面已经有mongoAdapter了。

三、决定使用什么样的方式和索引MongoDB

 1、主动模式(主动模式就是hubble完全控制数据库)

  这种方式是最简单的方案,比较适合于即时性比较高的工作。

  在此种情况下我们只要在hubble创建一个表,则同时mongodb中也会创建一个同样的表,整个表的结构完全相同,此时我们所有的操作都是直接去操作hubble即可。

 2、被动模式(被动模式情况下我们需要自己手动的去操作数据库)

  在这种情况下hubble表可以和mongo表不同(就是hubble表中可以只对需要索引的字段进行处理)

  插入:先插入数据库再插入hubble

  删除:先删除hubble再删除数据库中的记录

  更新:顺序无所谓

3、sqlserver做主表,mongodb做镜像表

   在这种情况下MongoDB也是完全受hubble控制的。

   此时hubble与镜像表的关系是主动模式连接的,与主表的关系是被动模式连接的。

   所以此时的操作规则如下

   插入:先插入主表再插入hubble

   删除:先删除hubble再删除主表中的记录

   更新:顺序无所谓

四、代码实现

  

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using Hubble.SQLClient; 6 using System.Data; 7 using System.Configuration; 8  9 namespace HubbleIndex10 {11    public class HubbleHelper12     {13         //现在的方式是mongo库和表都要在hubble中手动的去建。14        private readonly static string connStr =System.Configuration.ConfigurationSettings.AppSettings["HubbleConn"];//连接字符串15         /// 16         /// 增删改的操作的方法17         /// 18         /// hubble的sql语句19         /// 参数20         public static int ExecuteNonQuery(string hubbleSql, HubbleParameterCollection parameters)21         {22             int flag=0;23             using (HubbleAsyncConnection conn = new HubbleAsyncConnection(connStr))24             {25                 conn.Open();26                 HubbleCommand matchCmd =new HubbleCommand(hubbleSql, conn);27                 if (parameters!=null||parameters.Count!=0)28                 {29                     for (int i = 0; i < parameters.Count; i++)30                         matchCmd.Parameters.Add(parameters[i].ParameterName, parameters[i].Value);31                 }32                 try {flag= matchCmd.ExecuteNonQuery(); }33                 catch (Exception e)34                 {     35                     flag = -1;36                     throw e;37                 }38             }39             return flag;40         }41        /// 42        /// 查询方法43        /// 44        /// hubble的sql语句45        /// 参数46        /// 查询的数量47        /// 缓存过期时间48        /// 
49 public static DataSet ExecuteSelect(string hubbleSql,int cacheTimeout,out int count, HubbleParameterCollection parameters)50 {51 DataSet ds = new DataSet(); count = 0;52 using (HubbleAsyncConnection conn = new HubbleAsyncConnection(connStr))53 {54 conn.Open();55 HubbleDataAdapter adapter = new HubbleDataAdapter();56 adapter.SelectCommand = new HubbleCommand(hubbleSql, conn);57 //int cacheTimeout = 10;58 adapter.SelectCommand.CacheTimeout = cacheTimeout;//秒59 if (parameters!=null||parameters.Count!=0)60 {61 for (int i = 0; i < parameters.Count; i++)62 adapter.SelectCommand.Parameters.Add(parameters[i].ParameterName, parameters[i].Value); 63 }64 65 HubbleCommand cmd = adapter.SelectCommand;66 try67 {68 ds = cmd.Query(cacheTimeout);69 count = ds.Tables[0].MinimumCapacity;70 }71 catch (Exception e) { throw e; }72 }73 return ds;74 }75 }76 }
实现Hubble操作的代码

添加的引用

 转载请注明出处:

  

 

 

 

转载于:https://www.cnblogs.com/huyulin/p/3480198.html

你可能感兴趣的文章
poj 题目分类
查看>>
windows 安装yaml支持和pytest支持等
查看>>
读书笔记:季羡林关于如何做研究学问的心得
查看>>
面向对象的优点
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
jequery动态创建form
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
第六次java作业
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
Jenkins执行批处理文件失败
查看>>
深入理解jQuery框架-框架结构
查看>>
[7.14NOIP模拟4]通讯 题解 (Tarjan缩点+贪心)
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>