【问题标题】:Potential database systems for portable/standalone web applications?可移植/独立 Web 应用程序的潜在数据库系统?
【发布时间】:2011-09-30 20:35:48
【问题描述】:

我正在使用 python/cherrypy 开发一个可移植的网络应用程序,理想情况下,我希望能够简单地提取到一个文件夹,而不必安装任何东西。可能阻止这种情况的一件事是我的数据库后端。大多数类似的设置似乎都使用 SQLite,但我有一些担忧,因为我可能有多达 30 人同时连接到我的服务器,并且担心写排他锁会产生很大影响。

我的问题:

  1. SQLite 在同时处理多达 30 个尝试读取的连接和一些尝试写入的连接时会遇到多大的困难?对于尝试从数据库读取的人来说,插入可能会导致什么样的等待时间?
  2. 有人有其他建议吗?我想避免使用 MySQL,因为我对我的项目有一些商业愿望,但如果有必要,我会沿着这条路走。不过,我可能会放弃完全的可移植性并需要安装 PostgreSQL,然后再提交给 MySQL....
  3. 只要带宽不成问题,让一个桌面服务这么多连接是否合理?

提前感谢您的帮助,如果我问任何明显的问题或之前已经回答过的问题,我深表歉意(我已经在这里/在线搜索了相当多的时间,但没有看到任何确定的内容)。 -repole


编辑:顺便说一下,一些有用的讨论here 供以后偶然发现这个问题的人使用。

【问题讨论】:

  • 根据用例,你为什么不考虑 NoSQL 数据库?
  • @Cinquo - 我对 NoSQL 数据库的了解几乎为零。我目前正在调查他们。值得我的数据库非常依赖关系,我目前的设计在几乎每个表中都有一个外键;从我早期使用 NoSQL 阅读的内容来看,它可能不是一个理想的解决方案。 @Ignacio Vazquez-Abrams - 我希望有人能够将包含我的应用程序的文件夹复制并粘贴到另一台计算机上,并像没有任何改变一样使用它。我见过许多能够做到这一点的网络应用程序(SABnzbd、SickBeard、Subsonic 等等)。
  • @Ignacio Vazquez-Abrams - 无论从何处运行应用程序,多个用户都需要能够连接到它。这方面的一个例子是 Subsonic(一个音乐/视频流网络应用程序),我目前正在将外部硬盘驱动器作为网络应用程序运行,并且可以由多个用户连接。 “需要”可能不是正确的词,但由于它增加了多功能性,我希望能够做到这一点。

标签: python database sqlite web-applications


【解决方案1】:

那里有一些纯 python 数据库,不确定它们有多好或多稳定:

如果您担心分发许可证,请查看具有 Apache 许可证的内容。目前托管的顶级数据库项目之一是 CouchDB。我看到的主要问题是分发并不像简单地包含一个 Python 模块那么容易。

不确定您的 Web 应用程序的架构是什么样的,但可以使用多个 Sqlite 数据库来解决锁定问题。

另一个选项是伯克利数据库:http://docs.python.org/library/bsddb.html

【讨论】:

  • 正如我在上面的评论中提到的,我对 NoSQL 解决方案并不太熟悉。我肯定会研究 CouchDB(和其他 NoSQL 解决方案)。不确定多个 SQLite 数据库是否可以工作,我想我可以为基本上每个用户创建一个单独的数据库,每个单独的文件之间偶尔会交换一些信息,但我认为这比单个数据库更有效.
  • 另一个非基于网络的数据库是 Berkeley DB(它可以支持数千个同时访问同一数据库的线程):en.wikipedia.org/wiki/Berkeley_DB
  • 在答案中添加了一些纯 python 数据库。如果性能不是问题(30 个用户似乎不会,这取决于使用情况),那么这些可能会做到。
  • 非常感谢您的跟进。今天我将花几个小时研究这些选项。
猜你喜欢
  • 2015-09-02
  • 2023-04-02
  • 2010-11-13
  • 2011-03-07
  • 1970-01-01
  • 2019-04-27
  • 2016-08-09
  • 2010-09-09
  • 1970-01-01
相关资源
最近更新 更多