上篇文章《GraphQL查询语言学习笔记》学习了GraphQL的语法和介绍Golang的库。最近再使用Golang编写一款分布式消息队列BoltMQ,我将GraphQL用到BoltMQ的web管理UI上,这样更进一步了解GraphQL。
OpenStack O版 安装部署及问题解决
OpenStack项目是由Rackspace和NASA(美国国家航空航天局)共同发起的。它是一个开源软件,它提供了一个部署云的平台。为虚拟计算或存储服务的公有/私有云,提供可扩展的、灵活的云计算。是一个旨在为公共及私有云的建设与管理提供软件的开源项目。OpenStack目前版本Pike并在持续更新中,本文选用Ocata版本进行部署,并记录部署过程中遇到的问题。
GraphQL查询语言学习笔记
RSETful API接口想必大家都比较熟悉,GraphQL设计用于替代RESTful API接口,但目前不是所有情况都使用替代,他们各有优势。
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
在 2015 React 欧洲大会上,Lee Byron 介绍了 Facebook 的 GraphQL ,包含 GraphQL 背后的故事,查询语句的示例,还有核心的概念。GraphQL 非常易懂,直接看查询语句就能知道查询出来的数据是什么样的。你可以把 GraphQL 的查询语句想成是没有值,只有属性的对象,返回的结果就是对应的属性还有对应值的对象。
Cassandra数据库Golang Driver
搭建cassandra集群后,项目使用Golang语言对cassandra进行操作。需要Golang Driver,有gocql,gocql只提供了curd的操作方法,但不支持创建、删除keyspace。查询后有两种方法可以实现:
- gocql + gocqltable,纯Golang实现,gocql持续更新中。
- golang-driver,需要C/C++ driver支持。
考虑后使用第一方法
NoSQL数据库Cassandra运维工具nodetool连接远程节点
cassandra集群安装成功后使用nodetool命令连接本机节点正常,连接其他节点报错:connectexception 'connection refused (connection refused)'
,查看nodetool连接的7199
端口,监听0.0.0.0
。
那为什么会连接不上呢?原因在于:cassandra启动是有两种模式,local和remote模式。可以在conf/cassandra-env.sh
中查看和修改。
NoSQL数据库Cassandra监控MX4J
cassandra监控有许多方案,DataStax的Opscenter是比较耗的监控解决方案。可惜Opscenter6.0版本后已经不在支持开源cassandra版本。Opscenter5.x版本支持到cassandra2.1。最好可以使用cassandra自身支持的MX4J进行监控。
NoSQL数据库Cassandra监控
使用packetbeat、elasticsearch、logstash、kibana为cassandra搭建监控系统。
NoSQL数据库Cassandra数据模型
使用NoSQL存储数据和关系型数据库不一样,关系型数据库是行进行组织数据的。取而代之,应该把它想象成事一个有序的map结构。考虑它是一个map中嵌入另一个map:外部map的key为row key,内部map的key为column key,两个map的key都是有序的。
- 区分频次大的查询和频次小的查询,有些查询可能只被查询几千次,其它可能被查询数十亿次;
- 还要考虑哪些查询对数据延迟是敏感的。确保你的模型优先满足查询频次大的查询和重要查询。
- 反范式化来提升查询性能
NoSQL数据库Cassandra集群部署
在Linux系统部署NoSQL数据库Cassandra集群。
NoSQL数据库对比
本文主要对主流NoSQL进行对比,从各个方面进行对比,意在不同场景下选择正确的 NoSql 数据库。本文主要对比HBase、Cassandra、MongoDB、LevelDB、DoltDB。