1

我正在启动一个使用 SQLite 可能应该没问题的 Web 项目。我在它上面有 SQLObject,但是从长远来看——如果这个项目需要更健壮的(例如能够处理高流量),我需要准备一个过渡计划。我的问题:

  1. 在 SQLObject 下从一个数据库 (SQLite) 转换到另一个数据库 (MySQL 或 Firebird 或 PostGre) 有多容易?
  2. SQLObject 是否提供任何工具来简化这种转换?它只是简单地获取我定义的对象并调用 createTable 吗?
  3. 如果有多个 SQLite 数据库呢?例如,每个访客组一个?SQLObject 是否提供了处理这种情况的机制,如果提供,使用的机制是什么?

谢谢,肖恩

4

3 回答 3

3

3) 是一个非常有趣的问题。一般来说,SQLite 对于基于 Web 的东西来说是毫无用处的。它的大小可以很好地扩展,但并发性的扩展性很差,所以如果你打算同时处理几个请求,你就会遇到麻烦。

现在您在问题的第 3 部分中的想法是使用多个 SQLite 数据库(例如,每个用户组一个,甚至每个用户一个)。不幸的是,SQLite 在这个部门不会给你任何帮助。但这是可能的。我知道以前做过的一个项目是Divmod 的 Axiom。所以我肯定会检查一下。

当然,使用像您提到的那些(Firebird、PG 等)这样的良好并发数据库可能会容易得多。

为了完整性:

1 和 2)它应该很简单,无需您实际编写太多代码。我发现这个部门的 SQLObject 有点限制,并且强烈推荐使用SQLAlchemy。这要灵活得多,如果我今天开始一个新项目,我肯定会在 SQLObject 上使用它。它不会在任何地方移动“对象”。这里没有魔法,它将在数据库中的表中传输行。如前所述,您可以手动完成,但这可能会为您节省一些时间。

于 2008-11-09T11:53:37.943 回答
2

您使用 createTable() 的成功将取决于您现有的基础表架构/数据类型。换句话说,SQLite 映射到您选择的数据库的程度以及 SQLObject 如何决定使用您的数据类型。

最安全的选择可能是手动创建新数据库。然后您将不得不处理数据迁移,这可能就像在相同的表定义上实例化两个 SQLObject 数据库连接一样简单。

为什么不从功能更全面的数据库开始呢?

于 2008-11-09T06:20:43.107 回答
0

我不确定我是否理解这个问题。

SQLObject 文档列出了六种可用的连接。此外,数据库连接(或方案)在连接字符串中指定。将数据库连接从 SQLite 更改为 MySQL 是微不足道的。只需更改连接字符串。

文档列出了支持的不同类型的方案。

于 2008-11-09T04:06:02.223 回答