`
mlzboy
  • 浏览: 704514 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->用户:所有分组(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);
                
try
                {
                    
using (DbHashCursor cursor = (dbf as DbHash).OpenCursor(null, DbFileCursor.CreateFlags.None))
                    {

                        DbEntry _key 
= DbEntry.InOut(Encoding.UTF8.GetBytes(Term + "@" + score));
                        IEnumerable
<KeyDataPair> items = cursor.ItemsAt(ref _key, DbFileCursor.ReadFlags.None);

                        
try
                        {
                            
foreach (KeyDataPair kdp in items)
                            {
                                key 
= Encoding.UTF8.GetString(kdp.Key.Buffer, 0, kdp.Key.Size);

                                stream 
= new MemoryStream();

2008-07-30 06:41:42 象

                                stream.Write(kdp.Data.Buffer, 
0, kdp.Data.Size);
                                stream.Seek(
0, SeekOrigin.Begin);
                                p 
= (IndexClass.index)formatter.Deserialize(stream);

                                add_index_item(p, 
ref index_terms);
                                c
++;
                            }
                        }
                        
catch (Exception e)
                        {
                            Console.Write(
"Search_Index:{0}", e.Message); 
                        } 
                    }

                    
return c;
                }
                
finally
                {
                    

2008-07-30 06:41:42 象
db.Close();
                }
            }
            
else
            {
                Console.WriteLine(
"文件{0}不存在", filename);
                
return 0;
            }
        } 

2008-07-30 06:41:51 [北京]Erick
大哥,能提供个邮件地址吗,方便向您请教 

2008-07-30 06:42<span
分享到:
评论

相关推荐

    基于bdb存贮的简单fifo持久队列,支持多个队列,采用bdb的btree方式组织数据

    基于bdb存贮的简单fifo持久队列,支持多个队列,采用bdb的btree方式组织数据。 启动参数说明: -n 数据库的文件名,默认为:xianglei.db -p http访问的端口号,默认:1985 -i http访问的ip地址,默认:127.0.0.1 -f ...

    BDB Professional Edition v2.8

    BDB Professional Edition v2.8 &gt;BDB(Bain DB Builder)是跨数据库平台的数据库设计工具、 &gt;目前版本支持的数据库平台: &gt; √ Access &gt; √ MS SQLServer &gt; √ Oracle &gt; √ MySQL &gt; √ SQL...

    数据库设计工具BDB Developer Edition v3.0

    BDB Developer Edition v3.0 &gt;BDB(Bain DB Builder)是跨数据库平台的数据库设计工具、 &gt;目前版本支持的数据库平台: &gt; √ Access &gt; √ MS SQLServer &gt; √ Oracle &gt; √ MySQL &gt; √ SQLAnyWhere...

    数据库设计工具BDB 最新版 v3.0

    数据库设计工具BDB 最新版 v3.0 v3.0 下载: 1) 中文简体版: [url]http://www.bainsoft.com/downloads/BDB.rar[/url] 2) 英文版: [url]http://www.bainsoft.com/downloads/BDBEN.rar[/url] v3.0版本更新: 1, 增加...

    数据库工具 bdb v3.6 +界面预览 (dbbuilder )

    BDB 专业版 v3.6 -- 索引 1. 关于BDB 2. 系统要求 3. 如何购买 4. 联系我们 5. 感谢 1.关于BDB __________________________________________________________ BDB是贝恩软件(www.bainsoft.com)发布的数据库...

    数据库设计和部署软件BDB 个人版v2.7

    &lt;br&gt;您可以通过BDB来简化软件开发和部署过程: &lt;br&gt;1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 &lt;br&gt;2,数据库...

    BDB免费版本 v2.8

    BDB系列的轻量级版本,开放了绝大部分功能,如: 数据库设计,SQL智能化查询分析, 数据库管理,同步功能,和Excle文件之间的数据导入导出等等. &lt;br&gt;BDB支持的数据库平台: Oracle,SQLServer,MySQL,Access,SQL...

    bdb学习资料,很实用

    bdb学习资料bdb学习资料bdb学习资料bdb学习资料

    BDB使用指南,属于个人资源,个人学习研究的BDB心得

    BDB使用指南,属于个人资源,个人学习研究的BDB心得

    SQL智能完成工具BDB

    新编译的BDB版本,支持更智能化的SQL 查询分析提示、 输入自动完成功能。 &lt;br&gt;该功能类似SQLPrompt或MySQL-Front的智能化输入。 不过与上述软件只能在单个特定数据库平台使用不同, BDB支持更多的数据库...

    数据库设计软件BDB 2007(for Oracle/SQLServer/MySQL/Access/SQLAnywhere) V2.1

    BDB是跨数据库平台的数据库设计和自动安装工具、支持Oracle、SQLServer、Access、MySQL、SQLAnyWhere数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以为您的应用程序创建...

    BDB 2007数据库开发工具

    &lt;br&gt;此外、在BDB中提供了对开发语言的支持、 其数据库结构定义文件采用XML标准格式、 并且开放了外部读取数据库结构的源程序(C#/Delphi/JAVA)、 您可以通过使用BDB来简化软件开发和部署过程: &lt;br&gt;1...

    SVN repository BDB转FSFS

    SVN客户端升级以后打开原来版本库报错Failed to load module for FS type 'bdb',使用该资源下载后解压将原版本库文件夹更名为bdb放到dbd2fsfs.bat同一目录,双击dbd2fsfs.bat,生成fsfs文件夹。用新SVN客户端就可以...

    个人学习研究的BDB心得

    BDB使用指南,属于个人资源,个人学习研究的BDB心得

    数据库设计和自动安装工具BDB V2.2(for Oracle/MS SQLServer/MySQL/Access/SQLAnywhere/Sybase)

    BDB是跨数据库平台的数据库设计和自动安装工具、 支持Oracle、MS SQLServer、Access、MySQL、SQLAnyWhere、Sybase数据库。 通过BDB可以快速建立数据库模型、并随时与实体数据库进行双向同步。 同时它还可以...

    BDB数据库测试工具

    BDB2007,无需安装,数据库设计工具

    Oracle中BDB数据库的使用方法

    Oracle的BDB数据库以键/值的方式来存储数据,数据的存取非常快,而本身又小,在开发小型项目的时候可以采用。

    数据库设计和部署软件BDB 专业版V2.6

    &lt;br&gt;您可以通过BDB来简化软件开发和部署过程: &lt;br&gt;1,数据库设计。 通过BDB快速建立数据库模型。支持正向工程和反向工程, 以及数据库模型和实体数据库之间的比对更新和双向同步。 &lt;br&gt;2,数据库...

    BDB2007

    BDB 2007 -- Readme __________________________________________________________ &lt;br&gt;1、数据库设计工具、 通过它可方便定义数据表结构、并通过结构定义自动创建或更新数据库。 &lt;br&gt;2、跨数据库平台、...

Global site tag (gtag.js) - Google Analytics