mysql - Daemon 和 View 同时访问 SQLite 数据库

标签 mysql ruby-on-rails sqlite concurrency locking

我有一个 rake 任务作为守护进程运行,它为新剧集抓取数千个播客 rss 提要。如果找到新剧集,它会将其写入数据库。如果发现对旧剧集的更改,它会将更改写入数据库。该守护进程持续运行。

现在假设用户转到特定播客的页面。在我看来,我有一个 ajax 轮询( cometd )进程,它将使用 delayed_job 为给定的播客获取新剧集。

现在我一次只能运行其中一个。我可以运行守护进程或让用户触发 delayed_job 进程。我是 Rails 的新手,并不真正了解如何启用我需要的并发性。我没有在这里发布任何代码,因为此时我的问题确实是概念性的。如何设计能够处理这种并发的应用程序?

我的印象是切换到 MySQL 可能会缓解其中的一些问题,但是,我觉得我在这里遗漏了一个关键的难题。任何帮助将不胜感激。谢谢。

最佳答案

你缺少的是这个。 SQLite 是一个基于文件的数据库,这意味着当进程访问它时,它会锁定文件。这就是为什么您一次只能做一件事,无论是您的守护程序更新数据还是访问它的 View 。

解决方案是迁移到合适的数据库,如您建议的 MySQL。您已经远远超出了 SQLite 的功能,它不应该按照您使用它的方式使用。

关于mysql - Daemon 和 View 同时访问 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5409605/

相关文章:

mysql - 通过 PRIMARY KEY 查询更新在大表上太慢

ruby-on-rails - 通过 API 使用回形针保存文件

ruby-on-rails - Bundler:如何删除已安装的 gem

java - 在 Android 上将 double 转换为 SQL 友好的字符串?

java - 线程负载过重导致内存问题

PHP插入表问题

php - 选择 interbase 并插入到 mysql 仅显示 1 条记录

ruby-on-rails - Rails - text_field_tag ---- 设置 tabindex?

ios - 选择特定月份和年份的数据 sqlite xcode

php - 如何在 laravel 框架中创建三元关系