Изменение базы данных под SQLObject - PullRequest
1 голос
/ 09 ноября 2008

Я запускаю веб-проект, который, вероятно, должен быть в порядке с SQLite. У меня есть SQLObject поверх этого, но здесь мы думаем надолго - если этот проект требует более надежного (например, способного обрабатывать большой трафик), мне нужно будет иметь готовый план перехода. Мои вопросы:

  1. Насколько легко переходить с одной БД (SQLite) на другую (MySQL или Firebird или PostGre) под SQLObject?
  2. Предоставляет ли SQLObject какие-либо инструменты для облегчения такого перехода? Это просто взять объекты, которые я определил, и вызвать createTable?
  3. А как насчет нескольких баз данных SQLite? Например. по одному на группу посетителей? Предоставляет ли SQLObject механизм для обработки этого сценария, и если да, то какой механизм использовать?

Спасибо, Sean

Ответы [ 3 ]

3 голосов
/ 09 ноября 2008

3) Довольно интересный вопрос. В общем, SQLite довольно бесполезен для веб-приложений. Он достаточно хорошо масштабируется по размеру, но ужасно масштабируется по параллелизму, и поэтому, если вы планируете выполнить несколько запросов одновременно, у вас будут проблемы.

Теперь ваша идея в части 3) вопроса состоит в том, чтобы использовать несколько баз данных SQLite (например, по одной на группу пользователей или даже по одной на пользователя). К сожалению, SQLite не поможет вам в этом отделе. Но это возможно. Один проект, который я знаю, который делал это раньше, это Аксиома Дивмода . Так что я бы обязательно это проверил.

Конечно, вероятно, было бы намного проще просто использовать хорошую параллельную БД, подобную той, которую вы упоминаете (Firebird, PG и т. Д.).

Для полноты:

1 и 2) Это должно быть просто, если вы на самом деле не пишете много кода. Я нахожу SQLObject немного ограничительным в этом отделе и настоятельно рекомендую SQLAlchemy . Это гораздо более гибко, и если бы я начинал новый проект сегодня, я бы наверняка использовал его поверх SQLObject. Он никуда не будет перемещать «Объекты». Здесь нет никакой магии, это будет передача строк в таблицах в базе данных. Как уже упоминалось, вы можете сделать это вручную, но это может сэкономить вам время.

2 голосов
/ 09 ноября 2008

Ваш успех с createTable () будет зависеть от вашей существующей базовой таблицы / типов данных. Другими словами, насколько хорошо SQLite сопоставляется с выбранной вами базой данных и как SQLObject решает использовать ваши типы данных.

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

Почему бы просто не начать с более полнофункциональной базы данных?

0 голосов
/ 09 ноября 2008

Я не уверен, что понимаю вопрос.

В документации SQLObject перечислены шесть доступных типов соединений. Далее, соединение с базой данных (или схема) указывается в строке соединения. Изменение соединений с базой данных с SQLite на MySQL тривиально. Просто измените строку подключения.

В документации перечислены различные типы поддерживаемых схем.

...