Управление большой базой данных с использованием C # - PullRequest
1 голос
/ 14 июля 2010

Мы используем MySQL для получения данных из базы данных, сопоставления данных и отправки обратно сопоставленных данных пользователю.MySQL Db содержит 10 таблиц, 9 таблиц содержат меньше данных, которые необходимо сопоставить с 10-й таблицей, которая имеет 25 миллионов записей и все еще добавляется.Мне нужно создать приложение C #, чтобы сопоставить данные и отправить пользователю.Через каждые 1 минуту новые данные обновляются в оставшейся части таблицы, а старые сравниваются после сравнения.У меня есть 10 табличных данных в C # памяти, но когда-нибудь они выходят из памяти.Я имею в виду погружение приложения C # в 5-6 частей для обработки данных, а затем для остальной логики.Но мне нужно хорошее предложение, чтобы начать работу.

Спасибо, APS

Ответы [ 4 ]

1 голос
/ 14 июля 2010

Я думаю, что вы подходите к своей проблеме неправильно. Из вашего поста звучит так, будто вы пытаетесь загрузить огромное количество очень изменчивых данных в память. Делая это, вы полностью отказываетесь от необходимости иметь сервер баз данных, такой как MySql. Не загружайте все данные в память ... пусть ваши пользователи запрашивают нужные им данные из базы данных через ваше приложение C #. Это именно то, для чего предназначены серверы баз данных, и они будут обеспечивать значительно лучшую работу по обеспечению оптимизированного и эффективного доступа к данным, чем вы можете сделать сами.

0 голосов
/ 14 июля 2010

Вам, вероятно, следует подумать о своих алгоритмах и решить, есть ли способ разбить проблему на более мелкие куски, например, для одновременной работы с небольшими разделами данных.

32-битные процессы .netиметь ограничение памяти 2 ГБ.Возможно, вы достигли этого предела, отсюда и ошибки нехватки памяти?Если это так, вы можете сделать две вещи:

  • Запустить несколько процессов, каждый из которых имеет дело с подмножеством данных
  • Переместиться в 64-битную ОС и перекомпилировать ваш код в 64-битнуюисполняемый файл
0 голосов
/ 14 июля 2010

Я не использую MySQL, но я бы предложил использовать хранимую процедуру для сортировки данных в первую очередь.Зависит от того, насколько сложны или дорогостоящие ваши вычисления и насколько велик набор данных, который вы собираетесь отправить по сетиНо обычно я пытаюсь позволить серверу справиться с этим.Таким образом, вы не отправляете все свои данные по сети.Кроме того, вы избегаете неприятностей, когда ваша модель данных меняется.Вам не нужно перекомпилировать и распространять свое приложение на C #.Вы изменили 1 хранимую процедуру, и вы готовы

0 голосов
/ 14 июля 2010
  • Пожалуйста, не говорите, что у вас много данных. 24 миллиона строк - это не много по сегодняшним меркам.

  • Где сюда входит C #? Это выглядит на 100% как что-то (из вашего объяснения), что должно быть сделано полностью на стороне сервера с SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...