我的应用程序通过很多键/值进行配置(例如 30.000)
我想为这些配置找到最佳部署方法,因为我知道我想避免 DEFINE 以允许运行时重新配置。
我想过
- 通过 php 文件将它们预编译成数组
- 将它们预编译到 tmpfs sqlite 数据库中
- 将它们预编译到 memcached 数据库中
我有什么选择
- 这些配置的最佳随机访问时间(内存不是问题)?
- 如果我可以将这些配置分解为(网络,i18n,..)之类的系列,则最好的结构化访问时间
谢谢杰罗姆
我的应用程序通过很多键/值进行配置(例如 30.000)
我想为这些配置找到最佳部署方法,因为我知道我想避免 DEFINE 以允许运行时重新配置。
我想过
我有什么选择
谢谢杰罗姆
好吧,如果内存不是问题,只需将数组序列化为文件即可。绝对没有比这更快的解决方案了。你没有 SQLite 的 I/O 和库开销,也没有 memcached 的网络开销。
但请记住,内存一定不是问题。您将一次将整个 30,000 个元素的数组加载到内存中,而不是使用数据库,您可以根据需要在其中加载它们。
要构建设置,您可以将每个设置放在自己的文件中。
但实际上,您应该使用数据库。这就是他们的目的。我真的质疑为什么您需要担心 30k 设置..您可能需要重新考虑您的应用程序设计。
在数据库中怎么样?
使用这样的架构:
| key | value |
你可以有这样的数据:
| currency | pound |
| timezone | GMT |
这也意味着您可以像这样查询它:
SELECT * FROM options WHERE key = 'timezone'
甚至返回许多选项:
SELECT * FROM options WHERE key IN ('timezone','currency')
这可以在任何类型的数据库中,尤其是 SQLite 数据库。如果您使用诸如 PHP 之类的语言,您可以使用ADOdb进行数据库抽象,这样您的应用程序就可以在不同的数据库类型之间移植,如果您担心被绑定到一个数据库,请考虑一下。
如果你想要结构化,我会说使用parse_ini_file函数的 ini 文件。