Могу ли я запускать объекты в памяти или мне нужно посмотреть на сериализацию в БД - PullRequest
1 голос
/ 13 декабря 2011

Я работаю над многопоточным приложением, в основе которого лежит около 4 базовых сущностей

например,

 public class Album
{
    public ICPN ICPN { get; set; }
    public string Title { get; set; }
    public string Label { get; set; }
    public string PLine { get; set; }
    public string CLine { get; set; }


    public string Genre { get; set; }
    public string SubGenre { get; set; }

    public string Artist { get; set; }
    public int NumTracks { get; set; }
    public int NumVolumes { get; set; }

    public IList<ITerms> Terms { get; set; }

}

У меня есть 4 шага, где я использую шаблон «производитель / потребитель»с BlockingCollections для управления этими процессами.Это производственная линия, и я изменяю состояние объекта после его завершения, делаю копию статистики и ставлю в очередь следующий процесс, где он ожидает, когда будет выполнен следующий процесс / задача.

Я нахожусь вВ этот критический момент проектирования архитектуры мне нужно взглянуть на сериализацию некоторых из BlockingCollections в БД, или я могу запустить около 10 миллионов объектов вышеупомянутого типа в канале на сервере Highend.

У меня есть очередь, выделенная для статистики каждого процесса. Т.е. Timetaken / Success для пользовательского интерфейса Или я должен смотреть на хранение этой информации с объектами?

Скорость / Эффективность критически важны в этом процессе.

Существуют ли способы расчета требований к памяти или это случай, когда это не так, и смотрите

Обновление На этом этапе мне не нужно сохранять данные для сбоев и т. Д.поскольку объекты метаданных модифицируются и записываются на диск ... то есть необработанная папка / обработанная папка

1 Ответ

0 голосов
/ 13 декабря 2011

Вы на самом деле не описываете форм-фактор вашего приложения, поэтому я начну с того, что это зависит.

Если вам когда-нибудь понадобится перезапустить ваше приложение или если есть удаленныйвероятность того, что ваше приложение может содержать ошибки, тогда я предлагаю сохранить ваши текущие данные в какой-либо форме хранилища данных (базы данных, файла и т. д.), пока оно находится в полете.Конечно, это имеет значение только в том случае, если вы никогда не захотите потерять данные.

РЕДАКТИРОВАТЬ: Учитывая ваше редактирование, я не думаю, что это действительно необходимо, если вы не хотите сохранить результаты какой-либо предыдущей обработки данных.

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