NOSql
文章平均质量分 60
hebeind100
这个作者很懒,什么都没留下…
展开
-
搞定Redis数据库
简单来说 Redis 就是一个数据库,不过与传统数据库不同的是 Redis 的数据是存在内存中的,所以存写速度非常快,因此 Redis 被广泛应用于缓存方向。 另外,Redis 也经常用来做分布式锁。Redis 提供了多种数据类型来支持不同的业务场景。 除此之外,Redis 支持事务 、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。 本文将从以下几个方面全面解读 ...原创 2018-09-28 20:14:11 · 199 阅读 · 0 评论 -
RocketMQ最佳实践(三)开发spring-boot-starter-rocketmq实现与spring boot项目的整合
最近在使用spring boot/spring cloud搭建做微服务架构,发现spring boot官方提供的starter中居然没有集成RocketMQword天,顿时激发我的创作基情啊有木有上面这张截图来自spring boot官方文档,为啥官方提供了JMS、AMQP和Kafka却偏偏少了RocketMQ呢,我认为是因为目前RocketMQ在国外并不普及,而且才捐献给apache...原创 2017-09-18 17:00:36 · 1746 阅读 · 0 评论 -
RocketMQ最佳实践(一)4.0版本/概念介绍/安装调试/客户端demo
为什么选择RocketMQ我们来看看官方回答:“我们研究发现,对于ActiveMQ而言,随着越来越多的使用queues和topics,其IO成为了瓶颈。某些情况下,消费者缓慢(消费能力不足)还会拖慢生产者(造成消息阻塞)。虽然我们做了最大努力进行优化:节流、断路器或者回退,但是并不能进行优雅的扩展。因此我们开始专注于使用时下非常流行的kafka,但是仍然不能满足我们的要求,如低延迟和高可...原创 2017-09-18 16:58:56 · 151 阅读 · 0 评论 -
Redis 哨兵机制
Redis 哨兵的服务框架哨兵也是 Redis 服务器,只是它与我们平时提到的 Redis 服务器职能不同,哨兵负责监视普通的 Redis 服务器,提高一个服务器集群的健壮和可靠性。哨兵和普通的 Redis 服务器所用的是同一套服务器框架,这包括:网络框架,底层数据结构,订阅发布机制等。从主函数开始,来看看哨兵服务器是怎么诞生,它在什么时候和普通的 Redis 服务器分道扬镳:int...原创 2017-09-12 09:40:04 · 180 阅读 · 0 评论 -
Redis主从复制和哨兵模式
Redis主从复制1.Master可以拥有多个slave2.多个slave可以连接同一个Master外,还可以连接到其他的slave3.主从复制不会阻塞Master在主从复制时,Master可以处理client请求。4.提供系统的伸缩性。主从复制的过程1.slave与Master建立连接,发送sync同步命令。也就是说当用户在Master写入一条命令后,他们之间会通过...原创 2017-09-12 09:38:58 · 274 阅读 · 0 评论 -
Redis4.0新特性之-大KEY删除
在Redis中,对于大KEY的删除一直是个比较头疼的问题,为了不影响服务,我们通常需要自己实现工具来删除大KEY,或者在业务低峰期进行删除操作。 为了解决以上问题, Redis 4.0 新添加了 UNLINK 命令用于执行大KEY异步删除。那么这个异步删除的背后的逻辑是什么?通过源码我们可以的得知以下信息: 当我们调用异步删除UNLINK命令时:释放掉Expire Dicti 对 ...原创 2017-08-25 19:00:15 · 390 阅读 · 0 评论 -
Redis 4.0新功能
Redis 的作者 antirez 在三天之前通过博客文章《The first release candidate of Redis 4.0 is out》发布了 redis 4.0 的第一个 RC 版本, 在博文中他说, 因为这个新版本的 Redis 出现了多项改变, 所以他决定从原来的 3.x 版本直接跳到 4.0 版本, 以此来强调这次更新的变化之大。 模块系统Redi...原创 2017-08-25 18:53:12 · 102 阅读 · 0 评论 -
Java Maven项目中使用MongoDB GridFS上传音频图片
一、文件系统 先简单的介绍一下文件系统和分布式文件系统1、文件系统:是操作系统用来存取文件的,计算机通过文件系统存放数据。大部分均基于磁盘存储,典型的文件系统包括unix 的UFS,NTFS是window NT的文件存储系统。传统文件系统主要面临的问题就是磁盘容量不够时,需要扩容才可继续进行文件存储,如同咱电脑内存不够加块内存条。2、分布式文件存储系统:同传统的纵向扩容不同,...原创 2017-08-01 14:48:55 · 558 阅读 · 1 评论 -
MongoDB数据库之海量存储机制
GridFS是一种将大型文件存储在MongoDB数据库中的文件规范。一、如何实现海量存储由于mongodb中的bson对象大小是限制的,所以gridfs规范提供了一种透明的机制,可以将一个大文件分成多个较小的文件。这样的机制允许有效地保存大文件的对象,特别是哪些巨大的文件,比如视频,高清图片;该规范指定了一个将文件分块的标准,每个文件都在集合对象中保存一个元数据对象,一个或多个...原创 2017-08-01 14:46:18 · 293 阅读 · 0 评论 -
浅析 Redis 复制
摘要早期的 RDBMS 被设计为运行在单个CPU之上,读写操作都由经单个数据库实例完成,复制技术使得数据库的读写操作可以分散在运行于不同CPU之上的独立服务器上.Redis作为一个开源的、优秀的key-value缓存及持久化存储解决方案,也提供了复制功能,本文主要介绍Redis的复制原理及特性。 Redis复制概论数据库复制指的是发生在不同数据库实例之间,单向的信息传播的行为,通...原创 2016-11-18 09:39:19 · 90 阅读 · 0 评论 -
RocketMQ最佳实践(二)4.0版本/集群
1、还是先理解一些重要概念及说明Disk Flush(磁盘刷新/同步操作):就是将内存的数据落地,存储在磁盘中。RocketMQ提供了以下两种模式:SYNC_FLUSH(同步刷盘):生产者发送的每一条消息都在保存到磁盘成功后才返回告诉生产者成功。这种方式不会存在消息丢失的问题,但是有很大的磁盘IO开销,性能有一定影响。ASYNC_FLUSH(异步刷盘):生产者发送的每一...原创 2017-09-18 17:05:34 · 127 阅读 · 0 评论 -
RocketMQ最佳实践(四)可视化管理控制台rocketmq-console-ng
RocketMQ有一个对其扩展的开源项目incubator-rocketmq-externals,这个项目中有一个子模块叫“rocketmq-console”,这个便是管理控制台项目了。 先将incubator-rocketmq-externals拉到本地,因为我们需要自己对rocketmq-console进行编译打包运行。通过命令行进入到rocketmq-console子...原创 2017-09-18 17:08:10 · 375 阅读 · 0 评论 -
NoSQL还是SQL?这一篇讲清楚
传统的关系型数据库在应付这些已经显得力不从心,并暴露了许多难以克服的问题。 由此,各种各样的 NoSQL(Not Only SQL)数据库作为传统关系型数据的一个有力补充得到迅猛发展。本文将分析传统数据库存在的一些问题,以及几大类 NoSQL 如何解决这些问题,希望给大家提供一些在不同业务场景下存储技术选型方面的参考。 传统数据库的缺点 传统的数据库有如下几个缺...原创 2018-08-10 18:11:28 · 559 阅读 · 0 评论 -
支撑现代存储系统的算法
原文地址:Algorithms Behind Modern Storage Systems原文作者:Alex Petrov 读优化 B-Tree 和写优化 LSM-Tree 的不同用途作者:Alex Petrov随着应用程序处理的数据量不断增长,扩展存储变得愈发具有挑战性。每个数据库系统都有自己的方案。为了从这些方案中做出正确的选择,了解它们是至关重要的。...原创 2018-07-18 09:46:26 · 223 阅读 · 0 评论 -
Elasticsearch 史上最全最常用工具清单
工欲善其事必先利其器,ELK Stack的学习和实战更是如此,特将工作中用到的“高效”工具分享给大家。 希望能借助“工具”提高开发、运维效率! 工具分类概览基础类工具1、Head插件 1)功能概述: ES集群状态查看、索引数据查看、ES DSL实现(增、删、改、查操作) 比较实用的地方:json串的格式化 2)地址:http://...原创 2018-07-18 09:42:46 · 356 阅读 · 0 评论 -
究竟先操作缓存,还是数据库?
缓存存储,也是数据的冗余。(1)数据库访问数据,磁盘IO,慢;(2)缓存里访问数据,存操作,快;(3)数据库里的热数据,可在缓存冗余一份;(4)先访问缓存,如果命中,能大大的提升访问速度,降低数据库压力;这些,是缓存的核心读加速原理。但是,一旦没有命中缓存,或者一旦涉及写操作,流程会比没有缓存更加复杂,这些是今天要分享的话题。读操作,如果没有命中缓存,流程是怎么样的?...原创 2018-07-11 10:10:35 · 156 阅读 · 0 评论 -
深入浅出MongoDB复制
本文则是结合前两者最终给读者以简单的方式展现MongoDB复制的整个架构。本文分为以下5个步骤:MongoDB复制简介MongoDB添加从库MongoDB复制流程详解MongoDB高可用MongoDB复制总结1、MongoDB复制简介本章节首先会给大家简单介绍一些MongoDB复制的一些基本概念,便于大家对后面内容的理解。1.1、基本介绍MongoDB有副...原创 2018-02-01 09:55:06 · 156 阅读 · 0 评论 -
Redis 和 Memcached 的区别
Redis的作者 Salvatore Sanfilippo 曾经对这两种基于内存的数据存储系统进行过比较:Redis 支持服务器端的数据操作:Redis 相比 Memcached 来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在 Memcached 里,你需要将数据拿到客户端来进行类似的修改再 set 回去。这大大增加了网络 IO 的次数和数据体积。在 Redis 中,这些复杂的操作...原创 2017-10-17 10:24:24 · 123 阅读 · 0 评论 -
RocketMQ源码深度解析一之消息存储
RocketMQ的消息持久化是基于文件系统,而从效率来看文件系统>kv存储>关系型数据库。那么,到底是如何存储的,相信对源码进行解析,将会是我们大大提高对消息存储的认识。(一)存储层的整体结构 首先看下结构图 对于我们业务层来说,都是通过DefaultMessageStore类做为操作入口。RocketMQ下主要有6类文件,分别是三类大文件:Index文件,consumequeu...原创 2017-09-19 14:12:46 · 190 阅读 · 0 评论 -
分布式开放消息系统(RocketMQ)的原理与实践
分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题消息的重复问题RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的?关键特性以及其实现原理一、顺序消息消息有序指的是可以...原创 2017-09-19 14:11:41 · 115 阅读 · 0 评论 -
RocketMQ 消息存储
1.序言今天来和大家探讨一下RocketMQ在消息存储方面所作出的努力,在介绍RocketMQ的存储模型之前,可以先探讨一下MQ的存储模型选择。2.MQ的存储模型选择个人看来,从MQ的类型来看,存储模型分两种:需要持久化(ActiveMQ,RabbitMQ,Kafka,RocketMQ)不需要持久化(ZeroMQ)本篇文章主要讨论持久化MQ的存储模型,因为现在大多数的...原创 2017-09-19 14:07:56 · 229 阅读 · 0 评论 -
在一个千万级的数据库查寻中,如何提高查询效率?
1、数据库设计方面: A. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。B. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样...原创 2016-10-17 13:34:50 · 131 阅读 · 0 评论 -
NoSQL数据库的四大家族
NoSQL,泛指非关系型的数据库,全称Not Only SQL,意即“不仅仅是SQL”。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。在过去几年,关系型数据库一直是数据持久化的唯 一选择,数据工作者考虑的也只是在这些传统数据库中做筛选,比如SQL Server、Oracle或者是MySQL。甚至是做一些默认的选择,比如使用.NET的一般会选择S...原创 2016-09-26 11:44:38 · 1057 阅读 · 0 评论 -
防SQL注入攻略
什么是SQL注入(SQL Injection)所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。尝尝SQL注入1. 一个简单的登录页面关键代码:(详细见下载的示例代码)pr...原创 2016-08-09 10:08:23 · 229 阅读 · 0 评论 -
HBase Region恢复逻辑
Region恢复逻辑RegionServer出现宕机以后,其上部署的Region将会被Master重新分配处理,由于在宕机前,某些Region的memStore数据可能还没有做flush操作,因此,需要对这部分数据做还原处理,还原过程通过读取HLog文件来实现。截至到目前为止(1.0版本),HBase共对外声明了两种Region恢复策略,分别基于LOG_SPLITTING和LOG...原创 2016-05-08 11:11:14 · 356 阅读 · 0 评论 -
HBase HFile存储格式
HFile存储格式HFile是参照谷歌的SSTable存储格式进行设计的,所有的数据记录都是通过它来完成持久化,其内部主要采用分块的方式进行存储,如图所示:每个HFile内部包含多种不同类型的块结构,这些块结构从逻辑上来讲可归并为两类,分别用于数据存储和数据索引(简称数据块和索引块),其中数据块包括:(1) DATA_BLOCK:存储表格数据(2) BLOOM...原创 2016-05-08 11:10:53 · 456 阅读 · 0 评论 -
HBase RPC通信功能实现
Table of Contents RPC通信功能实现HBase的RPC通信功能主要基于Protobuf和NIO这两个组件来实现,在通信管道上选择的是protobuf对外声明的BlockingRpcChannel(阻塞式),其callBlockingMethod方法决定了客户端与服务端的交互行为,比如采用什么样的方法进行通信以及通信报文的格式规则都是通过该...原创 2016-05-08 11:08:22 · 396 阅读 · 0 评论 -
HBase之功能细节
1.Region定位在Google的BigTable体系中,tablet的存储地址通过3层目录结构来定位的,如图所示:注:tablet等同与HBase中的Region图释说明:(1)METADATATableMETADATATable是系统预定义的Table,当用户自定义表格被拆分成多个tablet之后,METADATA Table用来存储这些tablet的地址,在目...原创 2016-05-07 22:58:12 · 155 阅读 · 0 评论 -
HBase之Java API
Java API应用Configuration在使用Java API时,Client端需要知道HBase的配置环境,如存储地址,zookeeper等信息。这些信息通过Configuration对象来封装,可通过如下代码构建该对象:Configuration config=HBaseConfiguration.create();在调用HBaseConf...原创 2016-05-07 22:57:33 · 90 阅读 · 0 评论 -
HBase之数据模型(DataModel)
HBase基于Google的BigTable构建,是一种column-orientednosql数据库1.模型视图1.1概念视图从概念模型上看,HBase的存储逻辑同关系数据库类似,是基于Table的存储,存储视图如图所示:图中列出了表格的一条记录,com.cnn.www是该记录的主键,contents:、anchor:cnnsi.com和anchor:my.look.c...原创 2016-05-07 22:56:04 · 139 阅读 · 0 评论 -
HBase之体系结构(Architecture)
HBase在分布式部署上采用master/slave的方式,主要包含3大功能组件,分别是:RegionServer、MasterServer和ClientLibrary在分布式存储上使用的是Hadoop的HDFS子框架分布式计算功能基于Hadoop的MapReduce实现1.RegionRegion作为HBase的分布式存储单元包含了一组Row,这些Row的key值在索引排序上是...原创 2016-05-07 22:55:01 · 108 阅读 · 0 评论 -
HBase集群搭建
一、安装环境:至少两台linux主机,假设两台机器的登录用户名都为hbase,并且IP分配如下:192.168.7.85 master机器192.168.7.72 slave机器集群的每台机器需要安装如下软件:1.ubuntu linux2. jdk6.0或以上版本 $ apt-get install openjdk-6-jdk openjdk-6-j...原创 2016-05-07 22:53:30 · 101 阅读 · 0 评论 -
浅谈 Java 中 MongoDB NoSQL数据库使用指南
MongoDB是当今非常流行的一款NoSQL数据库,本文介绍如何使用MongoDB的Java驱动来操作MongoDB。一、引入MongoDB Java Driver包如果需要操作MongoDB的Java项目是一个Maven项目,可以在依赖中加上以下的配置。<dependencies> <dependency> <groupI...原创 2016-04-29 09:30:38 · 158 阅读 · 0 评论 -
HBase RegionServer功能职责
RegionServer功能职责租约管理HBase的租约管理功能主要应用在scan查询上,如果客户端执行scan操作以后,在60秒内没有将Scanner进行关闭,也没有显示的将租约移除,这时查询租约将会过期,RegionServer会强行关闭与之对应的Scanner,来防止无效连接数过多的情况发生。查询租约的过期时间可通过hbase.client.scanner.t...原创 2016-05-08 11:11:56 · 1258 阅读 · 1 评论 -
HBase Region拆分逻辑
Region拆分Region的拆分逻辑是通过CompactSplitThread线程的requestSplit方法来触发的,每当执行MemstoreFlush操作时都会调用该方法进行判断,看是否有必要对目标Region进行拆分。拆分前提Region可拆分的前提是需要满足如下约束条件:目标RegionServer的线上Region数没有达到hbase.r...原创 2016-05-08 11:13:29 · 474 阅读 · 0 评论 -
Redis 和 Memcached 的区别
Redis 的作者 Salvatore Sanfilippo 曾经对这两种基于内存的数据存储系统进行过比较: Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般...原创 2016-07-09 14:19:14 · 72 阅读 · 0 评论 -
操作hbase Java API 介绍及使用示例
几个相关类与HBase数据模型之间的对应关系java类HBase数据模型HBaseAdmin数据库(DataBase)HBaseConfigurationHTable表(Table)HTableDescriptor列族(Column Family)Put列修饰符(Column Qualifier)GetScann...原创 2016-05-21 21:37:39 · 138 阅读 · 0 评论 -
在集群中Java 通过调用API操作HBase
本文的内容是在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据,查询一条数据,查询所有数据等操作。具体流程如下:1.创建项目2.获取jar包到项目的lib目录下(这边试用的事hbase 0.98 lib目录下的所有jar包)3.编写java程序4.编写ant脚本 package com.wan.hbase;...原创 2016-05-21 21:36:49 · 152 阅读 · 0 评论 -
HBase常用功能和HBase+MapReduce使用总结
1.HBase如果加了列限定,如果该列不存在时返回的结果为empty. 看下面的代码: ?12 Get get = new Get(Bytes.toBytes("100")); get.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"...原创 2016-05-21 21:34:10 · 219 阅读 · 0 评论 -
Hbase几种数据入库(load)方式比较
问题导读1.你认为hbase入库有几种方式?2.能否想到其中一种的实现方式?3.根据想的内容,对比下面,说出自己的想法?1. 预先生成HFile入库这个地址有详细的说明http://www.aboutyun.com/thread-8603-1-1.html2. 通过MapReduce入库import java.io.IOException;import org.apache.commons...原创 2016-05-21 21:33:17 · 235 阅读 · 0 评论