数据库 学习数据库原理以及基于此实现的开源数据库软件

MQ对比之RabbitMQ & Redis

  |   0 评论   |   6,454 浏览

消息队列选择:RabbitMQ & Redis

RabbitMQ

RabbitMQ 是一个由 erlang 开发的 AMQP(Advanced Message Queue )的开源实现的产品,RabbitMQ 是一个消息代理,从“生产者”接收消息并传递消息至“消费者”,期间可根据规则路由、缓存、持久化消息。“生产者”也即 message 发送者以下简称 P,相对应的“消费者”乃 message 接收者以下简称 C,message 通过 queue 由 P 到 C,queue 存在于 RabbitMQ,可存储尽可能多的 message,多个 P 可向同一 queue 发送 message,多个 C 可从同一个 queue 接收 message

RabbitMQ 架构:

img

NoSQL数据库的分布式算法

  |   0 评论   |   547 浏览

本文译自 Distributed Algorithms in NoSQL Databases
原文:NoSQL数据库的分布式算法

系统的可扩展性是推动 NoSQL 运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性。这么讲使得 NoSQL 听起来像是一个大筐,什么都能塞进去。尽管 NoSQL 运动并没有给分布式数据处理带来根本性的技术变革,但是依然引发了铺天盖地的关于各种协议和算法的研究以及实践。正是通过这些尝试逐渐总结出了一些行之有效的数据库构建方法。在这篇文章里,我将针对 NoSQL 数据库的分布式特点进行一些系统化的描述。

接下来我们将研究一些分布式策略,比如故障检测中的复制,这些策略用黑体字标出,被分为三段:

  • 数据一致性。NoSQL 需要在分布式系统的一致性,容错性

数据库内部排序算法之两阶段多路归并排序算法实现

  |   0 评论   |   469 浏览

摘要: 两阶段归并排序算法是数据库查询的一个基础技术,在数据库应用中,常常采用“两阶段多路归并排序算法”来解决对海量数据的排序问题(这里的海量数据是指数据大小远远超过了数据库可用的主存的大小,无法将所有数据一次性的载入主存进行排序)。

前言

基于斯坦福大学的《数据库系统实现》,实现两阶段多路归并排序算法,通过 merge-sort 算法的实现,理解外存算法所基于的 I/O 模型与内存算法基于的 RAM 模型的区别;理解不同的磁盘访问优化方法是如何提高数据访问性能的。

首先生成一个具有 10,000,000 个记录的文本文件,其中每个记录由 100 个字节组成。实验只考虑记录的一个属性 A,假定 A 为整数类型。记录在 block 上封装时,采用 non-spanned 方式,即块上小于一个记录的空间不使用。Block 的大小可在自己的操作系统上查看,xp 一般为 4096 bytes。在内存分配 50M 字节的空间用于外部 merge-sort。要求设计和实现程序完成下列功能:

  1. 生成文本文件,其中属性 A 的值随机产生。
  2. 对文本文件中的记录,按照属性 A 进行排序,其中在第二阶段的排序中每个子列表使用一