2008-11-09 2 views
1

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

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

Спасибо, Шон

ответ

3

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

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

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

Для полноты:

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

+0

+1 для SQLAlchemy над SQLObject – 2008-11-10 09:55:47

0

Я не уверен, что понял вопрос.

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

documentation перечислены различные виды поддерживаемых схем.

2

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

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

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

Смежные вопросы