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);