张小贱

Make things work

Berkeley DB 锁子系统的配置

最近小伙伴在分布式数据库(DPINM)环境下做实验,数据集比较大,分到集群中每台机器上,会报lock不够用的错。Berkeley DB在初始化的时候,就会初始化锁子系统,为锁结构分配内存空间,一旦启动,是不可以动态分配的,如果不够用,就会报错。后来调节了参数,加大了Locks,  Lockers, Locked Object 的最大数量,重启之后被惊呆了,锁子系统映射到文件系统的共享内存空间...

Berkeley DB 事务支持的应用架构

本文翻译自Berkeley DB 官方文档 Architecting Transactional Data Store applications 一节,主要讲述使用BDB作为存储引擎时提供事务支持的几种进程访问模式。每个BDB环境都对应一个文件系统目录,其中包涵存储的数据和运行时提供的锁资源,互斥变量资源,共享缓冲池等。每个目录可以被多个BDB进程打开访问,但使用复杂度有较大区别。需要说明的...

PostgreSQL 客户端认证机制

最近实验室数据库需要提高安全性,因为以前只有自己人用,基本上是在裸奔,知道端口号和IP就可以连接上,不需要任何认证信息,没有安全可言。最简单的认证方式就是用户名和密码,但平常使用PG的时候都没有用到,就研究了一下PG的认证方式,取取经。 配置与使用 PG的认证方式有很多种,而且对于不同的database,不同的user,不同的访问IP都可以选择不同的方式认证。具体在配置文件pg_hba....

再见2015

2015年马上就要结束了,感觉过的好快,不过仔细想想这一年还是经历了挺多事,当然也少不了有遗憾。不管好的坏的,都是今天总结的下酒菜。 DPINM 这是今年开始做的项目,D是分布式,P是并行,INM是实验室的数据库名字。名字不是我起的,因为开始时候一头雾水,都不知道能不能做得好,还即要并行,又要分布。当时还是挺期待这个项目了,因为单机版数据师兄师姐已经写了几代了,剩下多是修修补补的工作。这...

暗时间

本文转自Mind Hack Mind Hack 这个博客前两年就看到了,虽然文章数量不多,可以说是我看过最好的博客,甚至在建自己博客站点的时候用的都是相同的主题。其中除了计算机技术方面的文章,其它思维方式的文章真的会有一种 Mind 被 Hack 的感觉。最近干活效率很低,同样生活效率也低,不仅收获很少,而且并不开心。特转其中一篇重读,抓住时间。 正文: 如果你有一台计算机,你装了一个...

去坐牢了

前几天在微博上看到一道类似星座,性格,爱情,命运之类的测评题,我其实对这种一点都不信,测出来的答案大多都是那种比较含糊,符合大部分人的心里,还让人感觉好像真准,这个懂我! 但是这个测试比较有意思,让我想了很久都不满意。题目是这样的: 把你关在一个5平米没有窗户的监狱里10年 ,只有一张硬床和行李,一个马桶,一个 铁门,头顶10米有个通风口,每天提供6个 馒头,一个自来水龙头。__  为了...

从fread和mmap 谈读文件的性能

本文转自 http://blog.163.com/digoal@126/blog/static/163877040201571610166742/  比较详细地介绍了文件读写的几种机制,分析很到位。 [原文] 1. https://www.byvoid.com/blog/fast-readfile/ 2. http://blog.csdn.net/jwh_bupt/article/de...

PG 内存上下文

本文首先大体讲一个内存上下文是干什么的,结构是怎么样的。然后具体介绍PG中现有的一套分配策略,并不详细分析源码的每一处(可以参考PG内核分析这本书),而是说说其中思路流程,如何调节参数进行优化。最后介绍如何使用C++重写其中的源码,让内存上下文不仅仅是PG中的一个特性,而是可以作为一个内存分配的库,供其它程序使用。并附上重写后的源码供大家参考。 大体概述 PostgreSQL 从7.1开...

一套笔试题

前一阵想着能不能挣点外块改善生活,就应聘当某在线教育的解题员,这是阿里几年前的一套笔试题,也是让我试着做的题。看了下,网上应该没有解答这么详细的,毕竟也花了一些功夫。至于应聘,觉得此公司有点混乱,就罢了。另外貌似也失去了改善生活的动力。不过好东西,还是要放出来~ 1.有一个虚拟存储系统,若进程在内存中占3页(开始时内存为空),若采用先进先出(FIFO)页面淘汰算法,当执行如下访问页号序列后...

MPI 中的点对点通信

使用MPI作为集群通信的工具已经有一段时间,一开始只是粗略的了解了一下它提供的消息传递接口,虽然可以解决大部分问题,但是使用不便,效率较低。这几天仔细看了看官方的文档,在MPI中提供了很多有用的函数接口,使用者完全可以在其上建立灵活的通信层。本文主要介绍集群点对点的通信。 首先看一个简单的例子,从一个节点发送一条message到另一个节点: #include <mpi.h> ...