2013-01-22 95 views
0

短故事:我下载了一个java/flash上​​传器,其中一个文件是.db。经过一番研究,我发现这是一个数据库。这引发了这个问题。我可以创建一个数据库(.db)文件并将其保存在根目录中的一个文件夹中,而不必依赖另一台服务器和sql查询吗?从理论上讲,只通过访问本地文件来加速我的网站。是否有可能拥有一个离线数据库

问题:我做了大量的研究,没有找到答案。主要是因为我从来没有处理过这个问题,所以我不知道在哪里看。

问题:有没有人听说过这样的事情?如果是这样,你能否把我引荐到一个教程网站,或者提供一个简短的定义/解释/例子说明这将如何工作以及这些文件之间将使用哪种通信语言? SQL?别的东西?我只是不知道!

谢谢大家的帮助。

+0

我建议使用sqlite。它使用本地文件数据库,并且是最容易掌握的。但是,请小心认为这会加快速度。 –

+0

向[SQLite](http://sqlite.org/)说“hello”。 – salathe

+0

如果您的数据库位于同一台服务器上,则基本上所有功能都是将数据存储在根目录的子文件夹中。你的意思是你想将数据存储在客户端或者php文件所在的位置? – Sebas

回答

1

[好部分] 从理论上说,是的,你可以做到这一点。一个例子是sqlite database。这个数据库是您存储在任何地方的单个文件。如果您使用PHP编码,则需要在您的PHP中安装相应的扩展以访问/查询此数据库。

[坏的部分] 这才有意义,如果你正在处理少量数据和您的查询是比较简单的。 Sqlite数据库很慢,只支持有限的一组sql操作。它们也不支持许多标准数据类型,并且缺少很多可能依赖的内置函数。如果你想在一个独立的应用程序(例如具有本地数据的移动应用程序)中使用简单的数据库支持,Sqlite数据库是非常好的,但对于存储大量事务数据不是很好。

[判决] 如果你正在寻找加快你的web应用程序,从适当的数据库切换到sqlite的,很可能只会阻碍你的应用程序,而不是帮助它。

+0

谢谢你的回答。这似乎是每个人都告诉我的。看起来像我坚持我的数据库,并继续寻找速度瓶颈 – Chaky31

+2

朋友不让朋友downvote没有评论。 – jbabey

+0

@pure_code我不确定你的评论是指什么。如果需要,您可以在客户端或服务器上安装sqlite--这一切取决于您的需求。 –

1

SQLlite可以提供无需使用服务器即可运行的数据库。它提供了一个标准的SQL接口,就像你使用reguar sql服务器(MySQL等)一样。它可能不会更快,因为它将比标准数据库服务器更多地依赖磁盘I/O。

+0

感谢您的快速回复。我在我的研究中看到了SQLlite,但认为它和mySQL是一样的。我会研究它,但如果它不提高速度,那么使用它似乎没有任何好处。我可能会坚持我的mySQL数据库。 – Chaky31

+0

内存访问比磁盘访问快得多。如果您的MySQL服务器配置正确并且您的查询和表格已经过优化,您将看到My​​SQL的性能显着提升。 – datasage

+0

@datasage这是一个奇怪的比较,因为它们都提供“内存数据库”。 – salathe

0

几乎所有可以命名的数据库解决方案都依赖于文件作为存储机制,因此仅将数据存储在文件中并不能为应用程序传递任何固有的性能优势。像SQLite这样的无服务器数据库确实存在,但选择它们的原因很少与性能有关,而是可移植性。

您可以运行MySQL或其他数据库的本地实例来消除线上传输成本。如果配置得当,他们在绝大多数情况下都会胜过SQLite之类的东西,因为除了磁盘存储之外,MySQL依赖于内存中的存储。

因为听起来你对这类东西来说很新颖,所以我会试着去担心这些过早的性能优化。也许从与您的Web服务器相同的服务器上的传统关系数据库(如MySQL)开始。

一旦你达到了你有足够的流量到你需要将数据库分离到不同的服务器的地方(为数据库或Web应用程序分配更多的资源,或者可以允许多个负载平衡的Web应用程序服务器与单个后端数据库对话),那么您可以开始担心更多关于这些性能调整的问题。

+0

谢谢。交通真的不是我现在关心的问题。我已经在另一台服务器上设置并运行了mySQL数据库。我正在研究替代方案,因为网站中只有两个半大的部分是一个简单的库,它从SQL数据库中获取文件夹的位置,并显示每行四个并按专辑进行组织。我还有一个日历,它使用javascript和php来正确设置自身,并从SQL数据库中获取事件并将其置于正确的日期。这两种情况都非常缓慢。我猜这个问题不在数据库中。 – Chaky31

+0

@KyleRoseberry问题很可能与数据库和/或您的查询有关。必须确保您的查询利用正确创建的索引。你需要确保你的MySQL服务器有足够的资源分配给它(提示:默认的MySQL配置通常是关于内存分配的严重配置),以便将索引保存在内存中等等。如果你有问题的查询,你应该打开不同的问题,以帮助改进。 –

0

看起来你正在谈论的只是在客户端所在的同一台计算机上运行服务器。这当然是可能的。

好处是,它仍然会使用SQL,甚至是网络协议,但是可以自包含在同一台计算机上。稍后切换到生产环境将是最小的配置更改。

它实际上不会使用网络,而是会使内存中的所有网络调用。这将运行得非常快,并且是一个很好的开发环境。

相关问题