BDB

系统 1635 0
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   *   1024 0 );  // 设置缓冲
            }
            
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( null ref  _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 );
     

BDB


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论