Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用SQLite作为生产数据库,这是个坏主意,但是_Ruby On Rails_Database_Sqlite_Production Environment - Fatal编程技术网

Ruby on rails 使用SQLite作为生产数据库,这是个坏主意,但是

Ruby on rails 使用SQLite作为生产数据库,这是个坏主意,但是,ruby-on-rails,database,sqlite,production-environment,Ruby On Rails,Database,Sqlite,Production Environment,我们目前正在rails中使用postgresql作为生产数据库,这是一个很棒的数据库,但我正在围绕SQLite构建新版本的应用程序。实际上,我们不使用postgres的高级功能,如全文搜索或PL/SQL。考虑到SQLite,我喜欢只使用一个文件移动数据库的想法,它在服务器和Rails中的简单集成,而且性能看起来非常好-> 我们的应用程序的流量相对较高,每天大约有120万次浏览量。因此,我们从数据库中进行了大量的读取,但进行了一些写入 你觉得怎么样?任何使用或试图(像我们一样)使用SQLite作为

我们目前正在rails中使用postgresql作为生产数据库,这是一个很棒的数据库,但我正在围绕SQLite构建新版本的应用程序。实际上,我们不使用postgres的高级功能,如全文搜索或PL/SQL。考虑到SQLite,我喜欢只使用一个文件移动数据库的想法,它在服务器和Rails中的简单集成,而且性能看起来非常好->

我们的应用程序的流量相对较高,每天大约有120万次浏览量。因此,我们从数据库中进行了大量的读取,但进行了一些写入


你觉得怎么样?任何使用或试图(像我们一样)使用SQLite作为生产数据库的人的反馈?

如果您执行大量读取和少量写入,那么请将SQLite与某种内存缓存机制结合起来(或者非常适合这样做)。这将有助于最小化对数据库的访问(读取)次数。这种方法有助于解决任何多读少写环境,并有助于避免SQLite缺陷——在您的特定情况下。

SQLite是为嵌入式系统设计的。它可以很好地处理单个用户,但不能很好地处理并发请求。每天1.2M的浏览量可能意味着您将获得大量的后者。

对于只进行读取,我认为理论上它可能比进程外数据库服务器更快,因为您不必将数据序列化到内存或网络流,所有数据都是在进程内访问的。在实践中,RDBMS可能更快;例如,MySQL具有非常好的查询缓存特性,对于某些查询,这可能是一种改进,因为所有rails进程都将使用相同的缓存。使用sqllite,他们不会共享缓存。

SQLite支持全文搜索……是的,但它没有postgres的功能强大。无论如何,我们不使用全文。SQLite文档有一整页的文档讨论这个问题,以及他们如何在版本3中解决这个问题:我同意,但它只是关于写而不是读。如果您使用异步写入或内存缓存机制,您会失去数据完整性,但速度会快得多。您已经将此体系结构投入生产了吗?如果是,那是什么样的经历?