2011-06-01 81 views
2

我有一个非常小的MySQL数据库,其中主表大约有300条记录,我偶尔会添加更多。该表存储文件的位置以及用户有权访问的视频资源的一些元数据。 (电影标题,路径,关键帧名称,电影名称,文件名等)将简单的MySQL数据库转换为NoSQL解决方案

我想将此表移至内存中的解决方案,但我现在对于那里的选项感到困惑是和真正的最快,最轻的重量,最好的降压。

Redis? MongoDB的?还有别的吗? MySQL可以在内存中运行吗?

我打算为不同项目添加一些其他数据库。

运行的这个盒子是CentOS 5.6,16GB内存,我每天约有100位访问者访问我的网站。

+0

如果你的表很小,我希望MySQL将整个事情缓存在内存中。你是否注意到数据库看起来特别慢? – 2011-06-01 12:58:11

+0

你的意图是?你为什么想要一个内存中的解决方案?所有主要的数据库管理系统都喜欢拥有大量的缓存内存,并且速度非常快。所以我非常好奇你的内存解决方案的原因。 – 2011-06-01 12:59:43

+0

@Eric Petroelje - 不,它并不慢,只是越来越多的游客每天都在观看镜头,我正试图最大限度地提高箱子的效率。我需要接下来实施清漆。 http://6colors.net – TalkingTom 2011-06-01 13:52:44

回答

0

这取决于您希望如何访问/查询数据库中的记录。

MongoDB是一个文档存储,它完成了Mysql可以完成的大部分工作。但我不会说MongoDB是一个轻量级的解决方案。

Redis是一款快速内存键/值数据库。但是您只能通过特定的密钥访问您的记录。

+0

那么我在我的表中每个记录都有一个唯一的关键 – TalkingTom 2011-06-01 13:50:49

0

最简单的方法是使用MySQL MEMORY表引擎。它将所有数据存储在内存中,并在MySQL服务器停止工作时将其删除。

0

最简单的事情就是配置mysql,以便将所有内容都保存在内存中(您有很多)。

这里看到 Is it possible to load a database in the RAM?

缓冲池大小的答案有了这样一个小桌子,甚至默认的配置,它可能已经是在RAM中所有的实际目的

0

对于300条记录,您将看不到移动到nosql系统的任何可衡量的益处。 MySQL可以使用内存作为存储表的底层 - 但是如果你的整个数据库小于系统上的可用内存量,那么这是不值得的 - 大多数现代操作系统(包括Linux)都会很少必须从磁盘读取数据 - 而且您不必在磁盘上维护数据库的副本以免重新启动。

您的数据库很小。 “我每天约有100位访问者访问我的网站”是一个相当无意义的指标,但意味着流量非常低。

16GB RAM是一个很大的内存 - 如果你正在处理大量的媒体文件,它可能是你的应用程序所需要的。

1

你需要问自己的第一件事是, 为什么你想切换到NoSQL数据库?

答案可能是:你需要更快的速度,你想 复制和分布式数据库系统, 需要二手存储 或复制的更多的可扩展性。或者你希望从更简单的开发中获益 。

但从300条记录我不认为任何,但 最后会帮助你。

我不认为你真的想要一个“内存中”的 解决方案。在内存中意味着每个数据只有被写入 来冲击,如果你关闭你的数据库,那么你所有的 数据都会丢失。如果你真的想要那么MySQL 有一个内存中的存储引擎。

否则,所有数据库将尽可能缓存在内存中的许多内存中 。在你的内存中,300条记录很可能会在MySQL中完整地写入 。切换到NoSQL数据库可能不会带来任何速度上的好处。

如果您一般计划切换到NoSQL数据库, 我宁愿MongoDB。它是NoSQL和 和RDBMS的混合体,因为它为您提供了一种几乎像SQL一样强大的查询语言 。你可以比RDBMS更好地缩小它 。对我而言,对于无模式数据库,编程将会更容易 。您可以通过 将MongoDB扩展到1000台服务器。

但是其他NoSQL数据库具有更多的可扩展性。 如果你需要更多的服务器,那么其他数据库将更好地提供 probablby。但是你失去了一些查询你的数据的方法。

如果您一般计划切换到NoSQL数据库 我认为MongoDB可以处理这个问题。对于一些特定情况,其他NoSQL数据库 可能更好,而不是 。