如果您的存储需求很小,那么使用SQL数据库就有点大材小用了。当我年轻无知时,我使用文本文件,并在需要访问它时使用flock()函数。这种方法不能扩展,但我仍然认为非数据库解决方案在Web 2.0中完全被忽略了。
是否有人不使用SQL数据库进行存储?有哪些替代方案?
有很多替代方案,但是拥有SQLite可以让你使用SQL功能而不需要繁琐的基于文件的存储,所以没有必要寻找这些替代方案。SQLite足够轻便,可以在手机和MP3播放器中使用,因此我不认为它会被视为过度。
因此,除非您的应用程序需要非常具体的功能,否则不必费心。大多数替代方案都更难使用且性能较差。
SQLite 是为此而发明的。
它只是一个包含完整 SQL 数据库的平面文件。您可以查询、更新、插入、删除,安装几乎没有任何开销,您所需要的仅是驱动程序(PHP 中提供标准驱动程序)。
SQLite 是一个软件库,实现了自包含、无服务器、零配置、事务性 SQL 数据库引擎。
有点奇怪,竟然还没有人提到这个?
对象数据库也很常见,例如 dbforobjects(http://www.db4o.com/)、ZODB(http://www.zope.org/Products/StandaloneZODB)等等。
所有这些都被认为在某些使用情况下比传统 SQL 数据库更快、更简单,但没有哪一个能够达到平面文件的简单性。
这可能取决于你的网站有多动态。我曾经使用过一种维基软件,它使用RCS来检入和检出文本文件。对于像StackOverflow或Wikipedia这样频繁更新的内容,我不建议使用这种解决方案。数据库的好处是它们可以很好地扩展,并且数据库引擎编写者已经解决了所有同时访问、负载平衡、复制等琐碎的细节。
我在一个.NET项目中使用了LINQ to XML作为数据源。这是一个小型解决方案,使用缓存来缓解性能问题。如果只需要将数据保留在一个公共位置而不增加服务器要求的快速站点,我会再次使用它。