物理/内存数据库。 (用于我的网站上的记录)

时间:2009-12-09 00:43:22

标签: mysql database memory logging memcached

我们都知道MYSQL。 我们都知道memcached。

我喜欢memcached。你有一个字符串键,它返回一个值。死简单。

是否有内存数据库? 例如,我正在构建一个需要跟踪LOGGING的网站。人们所做的一切......我需要跟踪。但是每次有人点击页面时写入磁盘都会很慢......

所以我想把它留在记忆中。 问题是,memcached对此来说太简单了。我不想将它存储在memcached中:

log1:query:apple,12-11-2009:32:33,3,5,2

是否有一个像memcached一样简单的工具,但提供的功能更多而不是基本的键值?

关键是使用简单,学习简单,但有效!

6 个答案:

答案 0 :(得分:4)

我不鼓励您使用其他数据库来存储日志信息与业务数据。当您想要进行实际报告时 - 例如,X组中有多少用户执行了活动Y - 您将希望在“业务数据”和“日志记录数据”之间进行连接。如果该数据位于不同的数据库管理系统中,您将遇到麻烦。

实际上,对磁盘执行单次写入的税率并不高(请注意,您的HDD控制器非常智能,可以批量写入 - 写入不会阻塞)。

答案 1 :(得分:1)

我认为SQLite可能符合您的需求。它是一个成熟的关系数据库(事实上,你可以使用SQL命令控制它,顾名思义),但非常轻量级,允许数据库完全保存在内存中。

答案 2 :(得分:0)

HSQLDB是我见过的最突出的一个。它小巧,快速,使用标准SQL,并由OpenOffice和其他项目使用。

答案 3 :(得分:0)

使用MySQL下的内存引擎肯定会保持快速。唯一的问题是它不是持久性的,所以如果MySQL重新启动,你的数据就会消失(对于会话数据等有用)。

要么只是在文件系统上附加文件。如果您需要在服务器之间合并日志,请使用facebook的抄写员。

答案 4 :(得分:0)

我对Flare的功能印象深刻。它使用memcached协议进行连接,并使用Tokyo Cabinet进行连接。最终的结果是memcached客户只是有点工作': http://labs.gree.jp/Top/OpenSource/Flare-en.html

我还没有在生产中运行它,顺便说一句。

此外,您还可以使用动态主机添加和许多复制选项进行群集,这样您就可以通过memcached密钥散列策略来执行一些时髦的内容,例如循环复制!当然值得一看,因为它应该(希望!)配置属性更改为指向Flare而不是memcached。

答案 5 :(得分:0)

您已经从数据库和操作系统获得了大量缓存/缓冲。你将增加主要的复杂性,没有任何收获,特别是对于大多数只写的活动。您可能会考虑像其他人一样进行日志记录 - 写入文本文件。