让我们有很多这样的类(百万)数据库选择快速更新
class WordInfo
{
string Value;
string SomeOtherFeatures;
List<Point> Points;
}
而下面的代码
private Dictionary<string, WordInfo> _dict;
public void ProcessData(IEnumerable<Tuple<string,int,int> words)
{
foreach(var word in words)
{
if(_dict.ContainsKey(word.Item1))
{
_dict[word.Item1].Points.Add(new Point(word.Item2,word.Item3));
}
else
{
_dict.Add(word.Item1, new WordInfo(....))
}
}
}
Main()
{
while(true)
{
IEnumerable<Tuple<string,int,int> data = GetDataSomewhere();
ProcessData(data);
}
}
正如你可以看到这个代码必须工作24 \ 7。主要问题是我不知道如何在数据库中表示_dict(我存储信息的地方)。我需要每秒处理1000-5000个字。关系数据库不适合我的任务,对吧?那么NoSQL呢?我需要快速的UPDATE和INSERT操作。另外我需要快速检查是存在(SELECT)在分贝。因为我有数百万条记录,这也不是微不足道的。你可以建议什么?可能是基于文件写我的自定义解决方案?
如果你想持久;你将需要某种DBMS。如果你想要原始速度,你可以使用核心散列表。在这种情况下,几Mword/s的速度是可能的。要实现一种持久性,您需要记录添加/删除操作,并定期将语料库转储到磁盘。这将花费时间。 – wildplasser