|
|
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Пишу программу (на PHP) и сейчас, для продолжения, надо начать использовать базу данных. Я уже спланировал ее структуру (БД несложная) и установил MySQL, потому что однажды с ней уже разбирался. Но какая СУБД будет использоваться в итоге не известно (вероятнее всего это либо MySQL, либо PostgreSQL). Выбор не сделан, потому что я вообще плохо знаком со всем, что связано с базами данных, а с другой стороны это не основная часть "проекта", а только инструмент. Но данные, которыми база заполнится в процессе разработки важны, и поэтому, если в будущем будет переход на другую СУБД, хочется чтобы он был как можно более безболезненным. И в первую очередь для самих данных. Вопрос такой: что мне надо учесть для максимальной переносимости и безболезненного перехода? Например, в MySQL есть тип ENUM, который специфичен для нее - значит, лучше не использовать. В общем, цель - максимальная независимость от используемой СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2008, 00:48 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Использование стандартного SQL ( только само ядро языка, а не его диалекты, специфичные для различных СУБД ). Отсутствие хранимых процедур, представлений и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2008, 12:32 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Задал вопрос как-то не подумавши :-) Ведь при смене СУБД, наверное, придется выгружать данные из базы в файл (собственного формата), а потом из файла заполнять БД на другой СУБД? И в таком случае, наверное, вообще не важно что и как я буду использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2008, 23:51 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Самое обидное будет, если перехода на другую СУБД так и не случиться (что наиболее вероятно) а вы при разработке не воспользуетсь всеми возможностями СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 07:13 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
GoffmanСамое обидное будет, если перехода на другую СУБД так и не случиться (что наиболее вероятно) а вы при разработке не воспользуетсь всеми возможностями СУБД.Я бы сказал, почти никакими не воспользуетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 10:11 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
miksoft GoffmanСамое обидное будет, если перехода на другую СУБД так и не случиться (что наиболее вероятно) а вы при разработке не воспользуетсь всеми возможностями СУБД.Я бы сказал, почти никакими не воспользуетесь. Это расплата ( я бы даже сказал - кара ) за независимость от той или иной СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:56 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
psoLЗдравствуйте. Пишу программу (на PHP) и сейчас, для продолжения, надо начать использовать базу данных. Я уже спланировал ее структуру (БД несложная) и установил MySQL, потому что однажды с ней уже разбирался. Но какая СУБД будет использоваться в итоге не известно (вероятнее всего это либо MySQL, либо PostgreSQL). Выбор не сделан, потому что я вообще плохо знаком со всем, что связано с базами данных, а с другой стороны это не основная часть "проекта", а только инструмент. Но данные, которыми база заполнится в процессе разработки важны, и поэтому, если в будущем будет переход на другую СУБД, хочется чтобы он был как можно более безболезненным. И в первую очередь для самих данных. Вопрос такой: что мне надо учесть для максимальной переносимости и безболезненного перехода? Например, в MySQL есть тип ENUM, который специфичен для нее - значит, лучше не использовать. В общем, цель - максимальная независимость от используемой СУБД. Данные перенести не проблема. Ну напишете конвертер в крайнем случае. Вот вещей типа LIMIT 1,50 (при работе с MySQL часто есть большой соблазн такое заюзать) придется избегать. Всеобщей трепетной любви к хранимым процедурам не понимаю. По большому счету, разрабатывается спрашивающими обычно какая-нибудь такая хрень, в которой без и них жить можно. А почему на PHP? Это ж скучно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 15:48 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
DogenДанные перенести не проблема.Не проблема, если не использовать СУБД-специфичные тип данных. И если не использовать СУБД-специфичную логику работы с этими данными в запросах и в клиентском приложении. Например, в некоторых СУБД пустая строка и NULL - это одно и то же, а в некоторых - это разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 16:15 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Dogen Данные перенести не проблема. Ну напишете конвертер в крайнем случае. Вот вещей типа LIMIT 1,50 (при работе с MySQL часто есть большой соблазн такое заюзать) придется избегать. Всеобщей трепетной любви к хранимым процедурам не понимаю. По большому счету, разрабатывается спрашивающими обычно какая-нибудь такая хрень, в которой без и них жить можно. А почему на PHP? Это ж скучно ;) Да, я в последствии так и подумал, что беспокоится тут не о чем. База у меня действительно очень простая. На PHP, потому что при моем объеме знаний это единственное на чем я могу писать эффективно :-) "Когда я буду большим и важным" я буду обязательно писать на сипипи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 16:34 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
miksoftНапример, в некоторых СУБД пустая строка и NULL - это одно и то же, а в некоторых - это разные вещи. Вы такие тонкости упоминаете :) Но тем не менее, когда я говорю о том, что перенос не проблема, я имею в виду не "слил дамп - залил на другой сервер". А NULL должен быть NULL... С другой стороны, пустая строка - вещь опасная. ПМСМ, NULL имеет право появляться в результатах запросов с LEFT JOIN, например. Но никак не в таблицах. И тогда что там понимает СУБД под пустой строкой, неважно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 17:15 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Если хочется быть независимым от версии бд, то для связи лучше всего использовать абстрактную прослойку. Например http://adodb.sourceforge.net/ ту же проблему с Limit 0, 50 решит спокойно, либо завязываться на ORM, например http://www.phpdoctrine.org/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 18:34 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
psoL пишет: 0) Надо учесть, что переносимых программ, работающих с БД не бывает. Если бывает - это N вариантов одной программы, а не одна. 1) из правила п.0 есть редкие исключения. > был как можно более безболезненным. И в первую очередь для самих данных. Данные тебе придется как-то переносить, это делается в основном руками. > Вопрос такой: что мне надо учесть для максимальной переносимости и > безболезненного перехода? Например, в MySQL есть тип ENUM, который > специфичен для нее - значит, лучше не использовать. ENUM-то как раз не страшен. Это число от 1-го до кол-ва констант в ENUM-е. Физически хранится именно номер, MySQL для понту подставляет в результатах символическое имя константы. В другой СУБД подставлять тебе придется руками, и все. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 19:45 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Вы возьмите, да и скачайте себе, например, phpBB (http://phpbb.com ). Распакуйте архив, там в папке /includes/db, лежит ряд файлов: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Точно так же, можно поискать более сложные приложения, которые могут работать с разными СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 15:08 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Выбор средств лучше делать до начала разработки. Не надо упираться на универсальность. В случае использования PHP лучше смотреть в сторону MySQL т.к. большинство хостингов обычно их в паре предоставляют. Если база простая, то в случае острой необходимости ее хоть на оракл недолго переделать. Если сложная и большая, то отказ от специфики выбранного SQL-сервера может привести к неэффективному решению некоторых моментов, т.к. специфика добавлена для облегчения и для ускорения работы запросов. Статью как-то читал про смену СУБД в готовых прогах - как правило простая смена синтаксиса ни к чему хорошему не приводила. Товарищ рассказывал - перевели базу с интербэйса на MSSQL2K, работает, но жутко тормозить стало из-за блокировок, а интербэйс из-за версионности данных таких проблем не имел. Так что пиши на том на чем работать будет, а об остальном не задумывайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 15:55 |
|
||
|
Что надо учесть при создании БД для её максимальной переносимости между разными СУБД?
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за советы. Решил продолжить работать с MySQL, а если что - как-ниубдь перенесу :-) Просто меня сначала сильно озадачила перспектива, но так как БД у меня простая, а интерфейс взаимодействия программы с БД меня не волнует (промежуточная программа), то я успокоился. Просто не работал раньше всерьез с БД и СУБД и плохо разбираюсь. Еще раз всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 23:35 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35417871&tid=1543776]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
192ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 545ms |

| 0 / 0 |
