Набор реплик и осколок в mongodb - PullRequest
0 голосов
/ 02 мая 2018

я новичок в mongodb. Я столкнулся с проблемой с получением данных с помощью веб-API asp.net MVC. Я получаю данные, но это занимает слишком много времени. в моей базе данных более 500 миллионов данных (20-30 миллионов данных каждый день вставляются). Таким образом, используя набор реплик и шард, можно ли быстро писать и читать данные?

ниже мой веб-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 + "}");

1 Ответ

0 голосов
/ 02 мая 2018

1: набор реплик вряд ли поможет распределить нагрузку на все ваши вставки данных; документы по репликации дают понять, что:

Из узлов, несущих данные, один и только один элемент считается первичным узлом, в то время как другие узлы считаются вторичными узлами.

Первичный узел получает все операции записи.

Однако учтите, что вы все равно должны использовать репликацию - это необходимо для обеспечения высокой доступности и устойчивости.

2: Sharding может помочь с распределением рабочей нагрузки:

Рабочие нагрузки как для чтения, так и для записи можно масштабировать по горизонтали по кластеру, добавляя больше сегментов.

Тем не менее, шардинг сложно реализовать хорошо, и то, получите ли вы какую-либо выгоду, зависит от формы ваших данных и способа их разбиения. Возможно, вы обнаружите, что вместо того, чтобы вкладывать средства в дополнительное оборудование и дополнительную конфигурацию для шардинга, вы можете получить большую выгоду от модернизации своего оборудования, например, для использования оборудования с более быстрым вводом-выводом.

...