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 );
<!----> 用户:所有分组(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 );
更多文章、技术交流、商务合作、联系博主
微信扫码或搜索:z360901061
微信扫一扫加我为好友
QQ号联系: 360901061
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元