在Azure存储上托管SQLite数据库?

11
我需要在Azure上托管一个SQLite数据库,该数据库将在多个Web应用程序之间共享。我的唯一选择似乎是Azure Blob或文件存储(因为他们取消了提供专用存储共享的“Azure网站”)。然而,似乎没有任何办法将Azure存储共享映射到Web应用程序将识别的驱动器,并且因此没有办法生成SQLite可以使用的路径。显然,SQLite无法使用REST API访问DB,除非在SQLite VFS中进行大量的黑客攻击。
因此,我想知道是否有人成功地在Azure Storage上托管了SQLite DB,使其可供Web应用程序访问?

1
什么意思,“他们除掉了Azure网站”?它只是被重命名为Web Apps(很久以前)。而且您绝对仍然拥有共享持久性存储。 (只要您不删除Web应用程序部署,就可以持久存在) - David Makogon
我的理解是,App Services 上的所有存储(除了您上传的实际网站部分)都应被视为临时存储,可能随时会丢失。这不是事实吗? 无论如何,我的存储需求可能达到几千兆字节,因此这仍然不是一个选项。 - Emperor Eto
不,情况并非如此。除非您删除部署,否则共享磁盘区域是持久的。另外:标准层提供50GB,高级层提供250GB。(另一方面,虚拟机本地磁盘确实是临时的)。 - David Makogon
哦,嗯。那可能是可行的(至少250)。好的,我完全在错误的地方寻找。很抱歉,我觉得Azure堆栈非常令人困惑。您能否指向MS网站上正确的信息?非常感谢。 - Emperor Eto
1个回答

10
Azure Web Apps(以前称为Web Sites)仍然存在,您的Web应用程序实例之间仍具有耐用的共享存储。
您不能使用blob来保存SQLite,因为它不与文件I/O兼容(它有一个REST API用于访问)。并且您不能简单地附加Azure文件存储卷(您可以通过API使用一个,但无法将其挂载到Azure Web App实例)。
对于Web Apps没有任何改变:只需将SQLite数据库放在应用程序根目录下面的一个目录中。

好的。我曾经找到一些信息(现在当然找不到了),似乎表明文件存储,如果不是 Blob 存储,可能是一个选项,并试图看看是否有人已经成功尝试过它。听起来,除非制作自定义的 SQlite VFS(我以前做过,但是非常痛苦),否则就不可能进行 REST API 调用。遗憾的是,他们不允许您通过 SMB/UNC 将 Web 应用程序连接到文件存储。无论如何,感谢您至少帮助澄清了持久性存储问题。 - Emperor Eto
1
只需将您的SQLite数据库放置在应用程序根目录下的一个文件夹中即可。没错。但是另一个Azure Web应用如何访问相同的SQLite数据库呢?比如,该数据库放置在App1的根目录下的app_data文件夹中。 - Shiva
所有的网络应用实例共享同一个文件存储。如果您启动一个完全不同的网络应用,那么这个新的网络应用及其实例将获得自己的文件存储。 - David Makogon
这正是问题所在。顺便说一下,我的解决方案是在sqlite之上创建一个专用的数据库服务,其他Web应用程序将访问该服务。非常令人沮丧的是,我们无法将Azure存储挂载到Web应用程序上。 - Emperor Eto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接