Как стать автором
Обновить

Комментарии 13

Есть мнение, что можно было пересесть с мерседеса не на жигули(Mysql), а хотя бы на Man(postgresql) :))
Несмотря на то, что postgresql — действительно лучше mysql как сервер, иногда нужно тупо хранить какие-то данные просто в таблице без замашек на всякие крутые штуки, типа хранимых процедур, хитрых индексов, типов данных и т.п.
В нашем случае это как раз так — мы очень редко пишем в базу, чуть чаще читаем, а для всего остального используем масштабируемые key-value хранилища.
Банально в плане лицензий postgresql более лоялен, нежели mysql.
А «хитрыми» процедурами и индексами, вас никто и не заставляет пользоваться.

Если же необходимо key-value хранилище, к тому же не распределенное, то sqlite вам ещё больше подходит.

А если необходимо распределенное, да вы еще и на C# пишете, то добро пожаловать в мир RavenDB
Подскажите MS Sql > PostgreSql migration tool, please
wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#Microsoft_SQL_Server
www.enterprisedb.com/downloads/add-on-components-bundles — бесплатно, ну и вообще, с инсталлером идут всякие тулзы, там же можно доставить всякое
dbconvert.com/ru/convert-mssql-to-postgre-pro.php — платно
Спасибо, очень познавательно.
Прекрасно!!! Спасибо.
С гуидами печаль, конечно. Все сконвертить в строку — оно конечно можно, но если данных гигабайы? Ссыкотно.

Кстати, еще одной практикой хранения гуидов в мускуле является binary[16]
Как-то непонятно

>>Работа с базой MSSQL в нашем случае осуществляется через LINQ провайдер.

Через какой LINQ провайдер? «Linq provider» уж слишком обощенный термин. Провайдер есть в Linq-2-Sql, в Nhinbernate, в EF и уже очень многих ORM.

Мне видится, что если бы проект был написан с использование NHibernate или EF, то проблемы перевода практически не было.

>>Через какой LINQ провайдер?
LINQ-2-SQL
L2S — это ORM. У которого есть LINQ-провайдер. Как и у EF, и у NH, и у BLToolkit. У каждого свой.

Все совершенно верно заметил A1lfeG, реализация некоторых общих extension-методов LINQ может отличаться у разных провайдеров. Плюс, отдельно взятые провайдеры могут поддерживать свои, уникальные методы. Все это, кстати, в общем случае делает LINQ «протекшей абстракцией», благодаря чему часто в работающем проекте LINQ-провайдер нельзя заменить простой заменой реализации интерфейса IQueryProvider, а можно только портировать код, использующий LINQ.
И так, еще к слову о «Работа с базой MSSQL в нашем случае осуществляется через LINQ провайдер».

Вся работа с базой не может осуществляться через LINQ-провайдер. Только чтение. LINQ-провайдер формирует только SELECT-запрос.
Не сочтите за рекламу, но в той же ситуации я подумал и предложил купить лицензию на www.devart.com/dotconnect/mysql/

Код на дотнете менять не пришлось вообще. Хранимые процедуры переписывали, потому что синтаксис другой и оптимизация кривая.
Следующим неприятным сюрпризом может стать тот факт, что BLToolkit не экранирует названия полей, поэтому не стоит использовать в ваших таблицах для имени поля всякие ключевые слова типа Key. При трансляции LINQ-выражения в SQL-запрос он упадет с синтаксической ошибкой.
На текущий неактуально. Когда я встретился с сей проблемой, то вместо поиска обходных путей прикрутил к BLToolkit экранирование для MySQL.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории