Задумался о таком переходе, т.к. с последним только начинаю знакомство, есть пара вопросов
1. Возможно ли (и как) конвертировать базу из MS в PostgreSQL?
2. Насколько велики различия pgSQL от T-SQL (т.е. насколько придется переделывать запросы в приложениях)?
заранее спасибо
1) Можно
1) Можно подключить PostgreSQL по ODBC к MS SQL, и перелить данные, все остальное (структура, ХП и т.д.) руками.
2) ANSI SQL конечно одинаковый, но сложно представить, что пользователи MS SQL не используют его расширенные возможности. У T-SQL и plpgSQL ничего общего, идеология тоже разная.
Так же не стоит забывать про способ доступа к БД: библиотеки, компоненты и т.д.
Большая вероятность, что придется переделывать все.
Ну всё-таки SQL
Ну всё-таки SQL он и в Африке SQL. Большая часть всё равно должна быть стандартной, если разработчики БД вообще что-то соображают в проектировании БД,а программисты в написании программ для SQL-серверов.
Безусловно, будут и нестандартные части, которые придётся затачивать руками - но тут уж деваться некуда!
Могу сказать что PostgreSQL в этом плане всё-таки более предпочтителен, потому что гораздо полнее реализовывает и соответствует стандартам SQL.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
Ситуация в
Ситуация в следующем: имеем базу 1С 7.7, конфигурация во многом переписана на прямых SQL запросах (посредством 1С++). (насколько разработчики и программеры 1С разбираются в том, что они делают - это отдельная песня)
Всвязи с этим пытаюсь оценить затраты на переписку.
Еще интересует, нормально ли (по скорости) Postgres будет работать с большими (>15Гб) базами?
Здесь вам вряд
Здесь вам вряд ли кто поможет оценить затраты на переписку.
Мне кажется лучше вам с этим обратится в 1C.
Послько последние версии 1C работают с PostgreSQL без всяких переписываний, то возможно есть смысл задуматься об обновлении версии 1C?
Что касается скорость - PostgreSQL не только совместимый, но и быстрый продукт и базы в 15G никакого труда для PostgreSQL не представляют.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
Последние
Последние версии - это 8.1. Чтобы перейти на нее, нужно будет конкретно переписывать/доделывать конфигурацию. Плюс "восьмерка" все-тки "потяжелее" и для работы с ней в терминале >70 юзеров скорей всего потребует апгрейда железа. Так что вопрос перехода на нее пока отложен (как минимум до конца года).
Что касается оценки затрат, то я имел ввиду не деньги, а время на переписку запросов T-SQL. Обычная 1С (без T-SQL запросов) должна нормально работать через транслятор SELTA@Etersoft (http://etersoft.ru/selta)
Тогда просто
Тогда просто возьмите тестовый сервер и 2-3 закавыристых запроса и попробуйте на тестовом сервере перенести.
Не думаю, что у кого-то здесь есть опыт перенесения именно 7-ки именно под PostgreSQL.
PostgreSQL полностью соответствует стандарту SQL92 и почти полностью SQL2003, но проблемы-то как раз у вас могут возникнуть при адаптации самопала MS SQL к стандарту.
-----------------------------------------------------------------------------------
"ls /" (C) Козьма Прутков
А можно
А можно поподробнее по первому пункту?
КАК КОНВЕРТНУТЬ ДАННЫЕ MS->PG?
Можно поподробнее, как перееконвертировать руками?
Может быть, есть какая -нибудь инструкция?
Программы типа DBConvert - платные, поэтому не подошли
Есть старая инструкция на сайте postgresql.org через ODBC, но из нее неясно, как перегнать 700 таблиц (там пример только для одной).
Прошу откликнуться.
Выгружайте
Выгружайте дамп в текстовом виде причём в диалекте SQL92, а потом пытайтесь всосать этот дамп в PostgreSQL.
Что-то всосётся, что-то придётся ручками допиливать, где-то так.
можно
можно попробовать сделать конвертер вручную - создать процедуру, которая бы вытаскивала метаданные из системных таблиц и строила DDL-запросы в синтаксисе PostgreSQL, в том числе и функции - тело вставлять в виде комментария, потом уже в постгресе переписывать. Проблема - в отслеживании зависимостей - вариант с дампом может быть даже лучше.
Другой вариант - взять какое-нибудь CASE-средство, всосать в него структуру MSSQL-базы, а потом из структуры сгенерить базу в постгресе.
Ну и напоследок - купить-таки (или найти лекарство на) платный конвертер, например http://www.sqlmanager.net/ru/products/postgresql/datapump
Я попробовал скачать эту прогу
Я попробовал скачать эту прогу, но так как объем базы 48 Гб (от 1С 8-ки) то делаться это будет долго.
Перед импортом программа вывела окошко настроек - опция SQL92 не включена. Включать ее?
Имена As is, LowerCase, или Upper? И потом она перегоняет таблицы в формате имени dbo.AccountTable1 и т .п.
Насколько мне известно в postgreSQL наоборот не должно быть этих "dbo." перед именем таблицы... и будет ли потом работать 1С? В общем чешу голову.
А вы не
А вы не пробовали обратится в 1C?
Мне кажется, что как минимум должен существовать конвертер именно для 1C. Это первое. А второе - это нельзя ли выполнить бакап 1C средствами самого 1C и затем восстановить не в MS SQL, а в PostgreSQL?
Что касается dbo. то в PostgreSQL понятие схем уже работает давненько, т.е. если вы создадите схему dbo, то таблица в ней будет иметь полное имя dbo.AccountTable1.
покой нам только снится?
Не могу представить себе причин для такого перехода с уже наработанной базы в 48Г(!) на совершенно другую базу, да еще и под 1С, работу которой с БД навряд ли можно назвать идеальной, причем версии, не поддерживаемой postgresql !
P.S. Интересно было бы посмотреть на работу 1С с базой указанного объема с 70 пользователями !!!