我是mongodb的新手。我面临着使用asp.net mvc web api获取数据的问题。我正在获取数据,但它花费了太多时间。我的数据库中有500多万个数据(每天插入20-30万个数据)。那么,使用副本集和分片可以快速地写入和读取数据吗?
以下是我的web api代码
var query = Query.And(
Query<obscls>.EQ(u => u.no, "no"),
Query<obscls>.GT(u => u.CreatedDate, Convert.ToDateTime(startdate)),
Query<obscls>.LT(u => u.CreatedDate, Convert.ToDateTime(enddate))
);
var data = obs.Find(query).ToList();
var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
oSerializer.MaxJsonLength = Int32.MaxValue;
string sJSON = oSerializer.Serialize(data);
return json = JObject.Parse("{'ListData':" + sJSON + "}");
发布于 2018-05-02 12:42:10
1:副本集不太可能帮助分散所有数据插入的负载;docs on replication明确表示:
在数据承载节点中,只有一个成员被认为是主节点,而其他节点被认为是次要节点。
主节点接收所有写操作。
但是,请注意,无论如何您都应该使用复制-它对于高可用性和弹性是必要的。
2:Sharding可能有助于分散工作负载:
通过添加更多分片,可以在集群中横向扩展读写工作负载。
然而,分片很难很好地实现,而且您是否能获得任何好处取决于数据的形状和分片的方式。例如,您可能会发现,与其为分片投资额外的硬件和配置,不如升级硬件以使用具有更快I/O的硬件,从而获得更大的价值。
https://stackoverflow.com/questions/50127981
复制相似问题