Code Bye

大家给推荐个适合c#的内存数据库啊

 

现在用List<数据类>操作的数据量大就不给力了经常崩溃。
有没有能多机连接并且适合c#使用的内存数据库给推荐个啊。

4分
自己用HashTable、BinaryTree等数据结构去实现
3分
如果想提高速度,可以用Dictionary泛型类,

如果想查询灵活,可以用DataTable类,

其实如果多机应用的话,还不如直接用sql server,用内存数据更麻烦也不会提高速度,

引用 2 楼 stonespace 的回复:

如果想提高速度,可以用Dictionary泛型类,

如果想查询灵活,可以用DataTable类,

其实如果多机应用的话,还不如直接用sql server,用内存数据更麻烦也不会提高速度,

不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?

2分
那是你的代码健壮性差。

几千条根本不可能导致list出错。

1分
你应该先确定下你是因为什么原因挂的。
1分
引用 4 楼 winner2050 的回复:

那是你的代码健壮性差。

几千条根本不可能导致list出错。

同意。

你的“悲伤的老板”看来需要给你再次加薪水啊。

lz的“悲伤的老板”看来需要给lz再次加薪水啊。 

老板不要把一个本来挺好的产品弄得“最后只有勉强就行一点小问题的售后服务、其他懂得开发的人都已经走了”这种境地。

4分
ArrayList,这个集合体积能够自动扩大2倍,可以保证新的内存连续性,防止在短时间内,内存连续的搬迁,减少性能的损耗。所以ArrayList里存的数据,永远是连续的内存空间。
3分
其实HashTable和字典Dictionary也不错,如果想了解之间的性能,最好到网上查询,根据自己的需要,选择适合的集合。
2分
几千条数据量不算大吧,你需要从其它方面着手,比如对数据操作的行为,List<T> 没那么脆弱
2分
代码问题,加异常捕获,代码走查,找到bug所在。我们项目中dictionary套list,几十万的数据频繁更新也没有造成程序崩溃
1分
使用DataSet 或DataTable是最好不过了
引用 7 楼 sp1234 的回复:

lz的“悲伤的老板”看来需要给lz再次加薪水啊。 

老板不要把一个本来挺好的产品弄得“最后只有勉强就行一点小问题的售后服务、其他懂得开发的人都已经走了”这种境地。

新疆啊,能写代码的都没几个人。
前天我还在弄Hyper-v Server 昨天又弄这代码。

1分
并发锁问题?
2分
前段时间处理的数据大概也是几天条,用的List<T>,还可以。
引用 14 楼 sbwwkmyd 的回复:

并发锁问题?

        private static List<Topic> _list = new List<Topic>();
        private readonly static object _lock = new object();
        public static void Add(Topic topicInfo)
        {
            lock (_lock)
            {
                _list.Add(topicInfo);
            }
        }


        public static void Remove(Topic topicInfo)
        {
            lock (_lock)
            {
                _list.Remove(topicInfo);
            } 
        }

public static Topic Get()
        {
            Topic topicInfo;
            lock (_lock)
            {


                topicInfo = _list.Find(delegate(Topic n_topicInfo) { return n_topicInfo.ExpirationTime > DateTime.Now; });
                if (topicInfo != null)
                {
                    //移除
                    _list.Remove(topicInfo);
                    
                    return topicInfo;
                }
                else
                {
                    return null;
                }

            }
        }

这能有什么问题啊。。 目前2000左右数据个线程读写 以后能达到几十万啊

2分
cyq.data 的文本数据库可以试试。
1分
经常崩溃的原因你得自己找啊,如果使用了多线程,一定是你没有做好保护措施吧。
2分
引用 3 楼 gzw13999 的回复:
Quote: 引用 2 楼 stonespace 的回复:

如果想提高速度,可以用Dictionary泛型类,

如果想查询灵活,可以用DataTable类,

其实如果多机应用的话,还不如直接用sql server,用内存数据更麻烦也不会提高速度,

不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?

才几千条就会挂,太不可思意了。我们做游戏,那会数据都是几万条放到List里进行内存操作都不会挂。
你是不是有用到多线程处理了。

2分
Dictionary只是比List快,崩溃问题不一定能解决,不过Dictionary比List稳定的地方是,Dictionary是线程安全的,多线程不需要lock也可以使用Dictionary,

不过前面几位说的很有道理,是你的程序写得不够严谨,几千条数据应该不算复杂,

引用 3 楼 gzw13999 的回复:
Quote: 引用 2 楼 stonespace 的回复:

如果想提高速度,可以用Dictionary泛型类,

如果想查询灵活,可以用DataTable类,

其实如果多机应用的话,还不如直接用sql server,用内存数据更麻烦也不会提高速度,

不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?

sql server我们现在学的
db4 for net能满足你的要求
DataTable 不错。里面提供了很多实用的方法。

老虎传送门

4分
引用 20 楼 stonespace 的回复:

Dictionary只是比List快,崩溃问题不一定能解决,不过Dictionary比List稳定的地方是,Dictionary是线程安全的,多线程不需要lock也可以使用Dictionary,

不过前面几位说的很有道理,是你的程序写得不够严谨,几千条数据应该不算复杂,

Quote: 引用 3 楼 gzw13999 的回复:
Quote: 引用 2 楼 stonespace 的回复:

如果想提高速度,可以用Dictionary泛型类,

如果想查询灵活,可以用DataTable类,

其实如果多机应用的话,还不如直接用sql server,用内存数据更麻烦也不会提高速度,

不是为了快,是因为有几千条记录频繁修改。现在用的List<> 经常挂。 Dictionary会好些吗?

千万别说Dictionary是线程安全的,这可纯粹是误导别人

            for (int i = 0; i < 100; i++)
            {
                Dictionary<int, object> temp = new Dictionary<int, object>();

                for (int j = 0; j < 10; j++)
                {
                    int m = j;
                    ThreadPool.QueueUserWorkItem((o) =>
                    {
                        temp.Add(m, new object());
                    });  
                }   
            }

自己跑跑看看,放按钮的点击事件里,然后你多点几次看看。人家Dictionary可没说自己是线程安全的,ConcurrentDictionary才是线程安全的。

1分
几千行就挂掉……  
2分
引用 20 楼 stonespace 的回复:

Dictionary只是比List快,崩溃问题不一定能解决,不过Dictionary比List稳定的地方是,Dictionary是线程安全的,多线程不需要lock也可以使用Dictionary,
 

Dictionary不是线程安全的,对于你的多线程环境可以试着用ConcurrentDictionary类来储存。

那要是服务器死掉,宕机了,你怎么保护,内存中的数据
搞毛啊 你一次显示的了那么多的数据?为毛不分业啊2了吧
试过eXtremeDB吗,可以测试一下,貌似还不错

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明大家给推荐个适合c#的内存数据库啊