Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Две ORM модели для C# и Python. Необходимо решение получше

Anna | 17.06.2014 | нет комментариев
Приветствую.

Изложение сложившейся обстановки ниже.

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

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

База — MS SQL Server. Встал вопрос о использовании ORM слоя и перевод бесчисленных изменений баз в сферу ответственности ORM инструментария (в том числе через поддержку механизма миграций). План написан на C#, впрочем так же есть гео сервис на Python дюже узко работающий с этими же базами. Python сервис находится в стадии написания и предуготовлен для автоматизации ряда действий с базами. На нынешний момент он юзает SQL Alchemy. Миграции не настроены.

Выходит: имеем C# и Python код, которые применяют одну и ту же базу. C# код работает с базой напрямую (ADO.NET), python код использует SQL Alchemy.
Для работы с базой со стороны C# кода мы также решили заюзать ORM. Выбор пал на EF 6.0, правда это не твердо — платные решения также рассматриваются.

Таким образом складывается не дюже славная обстановка — помощь единовременно 2-х моделей. То есть, меняем таблицу — меняем обе модели сразу. Это все ничего, если бы модели были в нашем ведении, но обучить иную сторону трудиться с python двумя новыми ORM’ам принудить фиксировать все метаморфозы однвременно и сразу же в 2-х моделях — фактически невозможно. Следственно хочу спросить сообщество, может кто сталкивался с таким вопросом и как его решили. В идеале отлично было бы вести модель только на одном языке.

Вот какие у нас (были) идеи:

1. Легко поддерживаем две ORM модели. Вариант ввиду описанного выше не подходит
2. Особенно продвинутая модель исполняет миграции (здесь речь о C# решениях — SQL Alchemy хоть и сильная, но несколько ее решений по миграции легко не работают с SQL Server’ом), а менее легко реверсит базу и отслеживает метаморфозы (сомневаюсь что SQL Alchemy это может)
3. Описываем модель скажем на XML а потом парсим его C# и Python парсерами и легко обновляем модели.
4. Перевод python кода на IronPython. Не получится, потому как гео сервис скорее каждого легко не будет трудиться.

Сталкивались ли вы с кое-что сходственным? Какое решение применяли бы вы? Что можете порекомендовать.

Спасибо

 

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB