Хочу ли я ORM?

У нас есть объектная модель, которая используется в трех приложениях. Две программы собирают данные, другая читает их и создает отчеты. Система очень разобщена, поэтому у нас не может быть единой базы данных, с которой общаются все программы.

Прямо сейчас программы просто используют общую библиотеку для заполнения объектной модели и сериализации / десериализации на диск. В частности, мы используем сериализацию XML.

У этой модели есть пара проблем. 1) XML можно считать расточительным. Файлы могли стать большими и громоздкими. Честно говоря, размер файла сейчас не вызывает большого беспокойства. 2) Меня больше всего беспокоит след памяти. Весь файл загружается в объектную модель, обрабатывается, а затем сохраняется.

Надеюсь, я передал свое беспокойство, в какой-то момент мы столкнемся с проблемами памяти с этим приложением во время выполнения. В единую «базу данных» (файл xml) будет собрано достаточно данных, которые не могут быть загружены в память сразу.

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

Мы изучили NHibernate с SQLite, SQL Compact 4.0 и EF 4 и LINQ to XML ( кратко). В прошлом я также использовал db4o для кэширования объектов на диск, но это был не связанный с этим проект.

Прежде чем я углублюсь и выделю время для изучения одного из них, я хотел бы знать, имеет ли моя идея смысл. Могу ли я иметь объектную модель, которая будет «волшебным образом» кэшировать на носителе, вместо того, чтобы бесконечно увеличивать объем памяти? Какой' кратчайший путь к достижению этой цели, даже если он не самый элегантный?

Есть ли другие технологии, которые могут мне помочь? Файлы с отображением памяти, linq-to-sql, Lazy (T) (только для извлечения объектов из файлов, когда это возможно).

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

Спасибо.

7
задан Nate 3 March 2011 в 07:41
поделиться