有时,在大型公司中启动并运行合适的数据库服务器可能需要数月时间。他们有各种各样的政策,这意味着这个过程需要几个月的时间。与此同时,另一种方法是将 SQLite 数据库直接放在文件服务器上。这对于有限数量的用户非常有效(我已经成功地为 100 个用户提供服务,使用一个这样的数据库),并且只推荐用于非关键数据。现在我一直在考虑获取数据库的方法,该数据库放置在文件服务器上以便能够处理十倍的用户。我的基本想法是利用公司周围许多闲置的台式电脑。同样,数据不是关键的,数据库访问可能很慢,99.0% 的正常运行时间就足够了。
您是否看到任何方法可以利用这些最理想的台式计算机来帮助减少文件服务器上的负载?您对最适合的 DBMS 有任何想法吗,SQLite 只是我的第一个想法。最好是开源的,这样我就可以聘请某人为此目的对其进行调整。或者,我有兴趣为此目的从头开始构建 DBMS。
我知道任何有经验的 DBA 都会对这个问题不屑一顾,但由于这些公司的政策,它们确实有价值。
这样做的问题是,当您扩展 SQLite 时,会遇到一个基本问题,即它没有行级锁,只有表锁。您首先耗尽的“东西”不是像 CPU 或 IO 或内存这样的原始资源——而是您的应用程序将陷入锁定管理。你可以有很多用户共享一个 SQLite 数据库,但只有你的读者可以容忍等待你的作者。如果此数据库将位于共享驱动器上,那么这只会使您的可扩展性问题变得更糟,因为它会引入额外的延迟,从而使锁获取/释放周期更长!
此外,在企业中,没有“非关键数据”这样的东西,除非您实际上是在谈论人 MP3 或食谱收藏!如果人们使用它来完成他们的工作并且无论出于何种原因它“消失”,那么他们会想知道为什么,并且可能将其升级到他们的报告线。我完全同情获得“合适的”数据库服务器需要多长时间(请注意,DBA 在等待采购部门购买服务器时也有同样的感觉!)但除非你准备好永远支持某些东西,不要部署它。或者,如果您这样做,可以使用免费版本的Oracle或SQL Server 之类的东西来开发它,以便在时机成熟时可以轻松地将其迁移到数据中心。