BDB

ContractedBlock.gif ExpandedBlockStart.gif Code
用户:所有分组(QQ好友)

==================================================
消息组:.net(
12)
==================================================
消息类型:聊天记录
==================================================

--------------------------------------------------
消息对象:象(
4618415)
--------------------------------------------------
2008-07-30 00:23:42 4618415
你的bdb .net是怎么用的啊 

2008-07-30 00:24:07 4618415
是自己实现的还是使用 
0.95那个 .net实现? 

2008-07-30 03:55:46 [北京]Erick
我是用的0.
95 

2008-07-30 05:41:02 象
我的也是,不过你发现了那个地方有个bug了吗 

2008-07-30 05:41:18 象
0.95那个实现有些问题, 

2008-07-30 06:12:12 [北京]Erick
似乎是Associate函数有问题, 

2008-07-30 06:12:19 [北京]Erick
不知道你用过没有 

2008-07-30 06:12:26 象
我用过啊,不是那里的, 

2008-07-30 06:12:40 象
我找了好久才找到 

2008-07-30 06:12:45 象
你用这个干啥的啊 

2008-07-30 06:12:55 [北京]Erick
做二级数据库啊 

2008-07-30 06:14:07 [北京]Erick
我刚遇到一个问题想向你请教一下, 

2008-07-30 06:14:55 象
说说看看,你是不是还在读书啊 

2008-07-30 06:15:31 [北京]Erick
是啊 

2008-07-30 06:16:24 [北京]Erick
我设置env用以提供并行的环境      
      
using (Env env = new Env(EnvCreateFlags.None))
            {
                
//设置并发参数Env.OpenFlags.InitCDB,Env.OpenFlags.InitMPool
                Env.OpenFlags envFlags =
                    Env.OpenFlags.InitCDB
|
                    Env.OpenFlags.InitMPool ;
                env.Open(
"", envFlags, 0);
                Txn txn 
= env.TxnBegin(null, Txn.BeginFlags.None);
                
using (Db db = env.CreateDatabase(DbCreateFlags.None))
                {
                    db.RecLen 
= 5000;
                    db.RecPad 
= '.'

2008-07-30 06:16:52 [北京]Erick
我对并发的参数设置不太了解, 

2008-07-30 06:17:06 [北京]Erick
特别是这里的env.Open该如何使用 

2008-07-30 06:19:08 象
public int Set_Write_Env(string path,int hash_code, int cache_size)
        {
            BDB_PATH 
= path;
            HASH_CODE 
= hash_code;

            env 
= new Env(EnvCreateFlags.None);
            Env.OpenFlags envFlags 
=
                 Env.OpenFlags.Create 
|
                  Env.OpenFlags.InitLock 
|
                  Env.OpenFlags.InitLog 
|
                  Env.OpenFlags.InitMPool 
|
                  Env.OpenFlags.ThreadSafe;
            
//打开数据库环境,注意后四个标志分别指示DB启动日志、加锁、缓存、事务处理子系统

            
try
            {
                env.SetCacheMaxWrite(cache_size 
* 1024 * 10240); //设置缓冲
            }
            
catch (Exception eb)
            

2008-07-30 06:19:08 象
{
                Console.WriteLine(
"设置环境错误:{0}", eb.Message);
                env.Close();
                
return 0;
            }
            env.Open(BDB_PATH, envFlags, 
0);
            
return 0;
        }
 

2008-07-30 06:19:20 象
问你是不是还在上学啊 

2008-07-30 06:19:24 [北京]Erick
是的 

2008-07-30 06:20:11 象
你30多了还在上学啊, 

2008-07-30 06:20:19 象
估计你是做毕业论文吧, 

2008-07-30 06:20:19 [北京]Erick
没啦,
25 

2008-07-30 06:20:23 象
哦 

2008-07-30 06:20:39 [北京]Erick
被你猜到了 

2008-07-30 06:20:50 象
你最好vc下做成dll再调用,否则你会很难堪的 

2008-07-30 06:20:49 [北京]Erick
是写论文用 

2008-07-30 06:21:13 象
这个0.
95 毛病太多,估计一般的水平和精力都该不出来,资料太少 

2008-07-30 06:21:27 [北京]Erick
我不会C
++,原来想找人cli c++的wrapper,结果没找到 

2008-07-30 06:21:43 象
哈哈哈,你麻烦了 

2008-07-30 06:22:09 [北京]Erick
你有这方面的资料提供下吗 

2008-07-30 06:22:20 象
c#下的bdb很少有人搞成功的,资料少的可怜,你看到网上那些demo,其实都是演示而已,根本无法应用, 

2008-07-30 06:22:48 [北京]Erick
我现在搜,连代码都找不到了, 

2008-07-30 06:22:51 象
data的长度好像过了几k就报内存错误了 

2008-07-30 06:23:07 象
没有资料, 

2008-07-30 06:23:08 [北京]Erick
oracle的论坛我也去过了 

2008-07-30 06:23:30 [北京]Erick
那你是怎么做的? 

2008-07-30 06:23:34 象
没用的,都是c
++的应用, 

2008-07-30 06:23:40 象
我是通过dll引入啊 

2008-07-30 06:23:42 象
vc 

2008-07-30 06:24:12 象
因为bdb .net这方面我们做了很多处理,都是公司的东西,不能给你 

2008-07-30 06:25:00 [北京]Erick
网上说是先调用C
++的接口再做wrapper 

2008-07-30 06:25:20 象
那估计不行 

2008-07-30 06:25:58 [北京]Erick
死的心都有了 

2008-07-30 06:26:18 象
你得做成vc dll,然后再引入,这样就简单多了,不过你还是研究生,估计实践经验不够,这样做知识面是要广点,比较麻烦些 

2008-07-30 06:26:19 [北京]Erick
你们用bdb做什么应用啊 

2008-07-30 06:26:29 象
垂直搜索的索引库 

2008-07-30 06:26:40 [北京]Erick
不用lucene啊 

2008-07-30 06:27:06 象
那东西太低级了,能商用吗 

2008-07-30 06:27:32 象
扩展性太差,不适合商用,哄哄老板还可以 

2008-07-30 06:27:41 [北京]Erick
呵呵 

2008-07-30 06:28:11 [北京]Erick
怎么办啊,其它的嵌入式的数据库我都找了一遍了,并发性都不行,你有什么好的建议 

2008-07-30 06:30:39 象
只有bdb 

2008-07-30 06:30:47 象
sqlite 速度快,并发不行 

2008-07-30 06:31:02 [北京]Erick
我测了,10线程必死 

2008-07-30 06:31:33 象
你们也是哄哄导师而已,随便糊弄一下吧,dbd问题不大,只要数据每天不过2K,应该没啥问题 

2008-07-30 06:31:49 [北京]Erick
前面你给我的示例代码中BDB_PATH这个参数是设置什么 

2008-07-30 06:34:47 象
dbd文件啊, 

2008-07-30 06:35:34 [北京]Erick
是bdb文件的绝对路径吗? 

2008-07-30 06:35:53 象
是啊,你还要问啊,大哥 

2008-07-30 06:36:24 [北京]Erick
还不容易逮着一个懂的,不能放过啊,呵呵 

2008-07-30 06:37:10 [北京]Erick
有没有简单的示例性的代码提供学习一下, 

2008-07-30 06:37:39 象
没用的, 

2008-07-30 06:37:50 象
必须修改dbd 
0.95 .net的源码 

2008-07-30 06:38:40 象
修改的地方不多,但是代码不是我修改的,你要 修改后的,我可以给你,源码,我拿不到,核心的东西我也没有, 

2008-07-30 06:38:53 [北京]Erick
行啊, 

2008-07-30 06:38:59 [北京]Erick
我又不要源码 

2008-07-30 06:40:08 象
你试试吧,你说的那个函数我们并没有用,也许我们改了别的地方,那个地方自然就通过了 

2008-07-30 06:40:11 象
接收文件成功,保存于C:\Documents and Settings\Administrator\Desktop\libdb_dotNET45.dll。

2008-07-30 06:40:27 象
 
public void Write_Index(string key,IndexClass.index index, int table_id)
        {
            
try
            {
                
#region 写索引
                
using (Db db = env.CreateDatabase(DbCreateFlags.None))
                {
                    
//1:设置环境,打开数据文件
                    db.SetFlags(DbFlags.Dup);//容许hash重复
                    DbFile dbf;
                    
try
                    {
                        dbf 
= db.Open(null, BDB_PATH + "\\term" + table_id.ToString() + ".db"null, DbType.Hash, Db.OpenFlags.Create, 0);
                    }
                    
catch (Exception eb)
                    {
                        Console.WriteLine(
"打开数据文件失

2008-07-30 06:40:27 象
#endregion
            }
            
catch (Exception e)
            {
                Console.WriteLine(
"写索引错误:{0}", e.Message);
                
return;
            }
        } 

2008-07-30 06:40:25 [北京]Erick
嗯, 

2008-07-30 06:40:27 象
败.{
0}", eb.Message);
                        return;
                    }

                    MemoryStream stream 
= new MemoryStream();
                    BinaryFormatter formatter 
= new BinaryFormatter();

                    stream 
= new MemoryStream();
                    formatter.Serialize(stream, index);

                    DbEntry _key 
= DbEntry.InOut(Encoding.UTF8.GetBytes(key));
                    DbEntry _data 
= DbEntry.InOut(stream.ToArray());

                    
if (dbf.Put(nullref _key, ref _data) != 0)
                        Console.Write(
"{0}:输入错误", key);

                    dbf.Sync();
//数据更新
                    db.Close();
                }
                

2008-07-30 06:41:41 象
        
public int Search_Index(string Term, int score, ref List<Index_Term> index_terms)
        { 
            
string key="";
            
int c = 0;

            IndexClass.index p;

            
string filename = BDB_PATH + "\\term" + Get_Table(Term, HASH_CODE).ToString() + ".db";

            
if (System.IO.File.Exists(filename))
            {
                DateTime b 
= DateTime.Now;
                BinaryFormatter formatter 
= new BinaryFormatter();
                MemoryStream stream 
= new MemoryStream();

                Db db 
= new Db(DbCreateFlags.None);
                db.SetFlags(DbFlags.Dup);
                DbFile dbf 
= db.Open(null, filename, null, DbType.Hash, Db.OpenFlags.Read

2008-07-30 06:41:41 象
Only, 
0);
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值