Jump to Navigation

Database

MySQL, PostgreSQL数据库

etcd客户端版本说明

前言

在用etcd客户端的时候,发现找到了几个实现,有点混乱。

简单整理一下,供使用参考,希望正确选择使用etcd客户端实现。

v0版本

支持etcd版本:v0.4-

实现方式:net/http包。

状态:已弃用

v1版本

地址:https://github.com/coreos/go-etcd

支持etcd版本:etcd-v2.0+

实现方式:net/http包。

状态:已弃用

v2版本

地址:https://github.com/coreos/etcd/client

支持etcd 版本:etcd-v2.0+

实现方式:net/http包

状态:正式版

v3版本

地址:https://github.com/coreos/etcd/clientv3

支持etcd 版本:etcd-v3.0+

实现方式:gRPC-go包

状态:正式版

skype的本地消息存储是明文的

skype的本地消息存储在sqlite数据库中,并且数据库没有任何加密处理,
包括windows/linux/MacOS系统上的版本,以及移动端版本。

只要使用任何的sqlite工具,都可以打开.Skype目录下的*.db文件查看。

In Linux: /home/user/.Skype/skypename/
In Mac OS X: /Users/user/Library/Application Support/Skype/skypeuser
In Windows : C:\Users\Username\AppData\Roaming\Skype\skype.id

查看工具:https://github.com/suurjaak/Skyperious

原来以安全著称的skype,被收购后也成这样了啊。
要是这样的话还不如qq呢,直少有个加密存储。

hyperdex 不同数据类型hash算法

hyperdex使用hyperspace hashing算法对记录的每个字段做哈希, 并且所有字段的哈希值作为每个维度的值映射到多维度空间中的一个点上。

通过化分多维空间的方式,把所有的记录分布到不同的存储节点上,实现hyperdex的分布式NoSQL功能。

对于hyperdex的实现,它所支持的土原子数据类型各自有不同的哈希算法,

原子类型有float,int64,string,每种类型的哈希算法如下:

一、hyperdex数据类型

字符串,长度限制???

int64类型,

float类型,

二、hyperdex容器数据类型

list列表类型,

set集合类型,

map映射类型,

三、不同数据类型的hash值计算

字符串类型hash算法

使用cityhash算法计算该字段值的hash值。

int64类型hash算法

unpack64le 把值高字节与低字节交换位置,64位为8个字节,即1,8交换,2,7交换,3,6交换,4,5交换

PHP的PDO遇到MySql has gone away的解决方法

在MySQL特定的数据库参数配置的情况下,在一个超时的连接上调用任意的mysql函数,

会导致PHP的PDO扩展报"MySQL has gone away"警告,导致程序无法继续执行。

在使用多种PHP层的解决方案后,依旧无法避免这一问题的出现。

原因在于PDO架构采用了连接对象缓存机制,在使用相同的dsn串连接数据库时,

PDO会从连接池对象中取出有相同dsn串的连接,问题就出在这个地方。

当该连接出现了"MySQL has gone away"之后,PDO并不知道这一情况,

PDO连接对象仍旧在PDO的连接池中。

下次即使在PHP层检测到这一问题,并重试连接,PDO却返回之前报了错的连接。

问题的原因查找到了,接下来就是寻找解决方法。

由于PDO没有提供关闭连接的方法,而是依靠PHP本身的引用计数与垃圾回收机制关闭连接,

在大多数情况下这都没有问题,但这时候这种机制就略显无力了。

经过多次实践修改测试,总结出来以下两种方式,

hyperdex导入数据测试

hyperdex发布了1.0正式版本。
抽了点时间预先测试了一次。

本次测试使用的go绑定api编写的导入数据工具。
对go语言还不太熟悉,写的测试程序可能没有达到最优化状态。
另外hyperdex的go语言api还不完善,跑一段时间后内存被吃光。
使用的是普通的台式机,没有在服务器上测试。
hyperdex 导入数据测试结论,
比较费资源,优化的不够。分区随意,很容易造成数据在多个节点分布不均匀。
导入测试100w记录后,在没有请求的情况依旧占用大量CPU。
导入速度不是太快,在普通台式机上,可写入每秒300-400条记录。
磁盘文件不会清理,目前还不知道怎么清理。
还没有测试区间搜索功能,第二索引搜索功能。

这次测试结果并没有到达预期的效果,但在hyperdex有一个基本的认识。
后面再通过测试程序做更全面的测试。

Category:

HyperDex-1.0.0发布了

这个NoSQL实现在所有的NoSQL产品中算得上能让人眼前一亮的。

它使用了不同于其他的任何NoSQL的实现方式组织数据的分布、存储和查询。

这种来自数学机制让它天生有方便分布和查询的功能。

发布通知:http://hyperdex.org/NEWS/

HyperDex特性:

高性能,是现在流行NoSQL速度的2倍以上。

功能强大,多key事务支持。

强一致性,

高可用性,允许可配置的问题结点。

高扩展性,添加结点时自动分布数据。

本版本支持多语言绑定,C, C++, Python, Java, Ruby, 和 Go。

Category:

Couchbase 2.2.0 发布

发布公告,

提升XDCR跨机房复制性能。
提升数据清理性能。
添加只读管理员用户功能。
添加服务恢复工具。
非root用户安装和启动。
命令行重置管理员密码功能。

详见:
http://blog.couchbase.com/announcing-couchbase-server-22-0

Category:

PostgreSQL 9.3 正式版发布

我们非常高兴的宣布 PostgreSQL 9.3 正式版发布了,该版本包含可写的外部数据封装、数据页 checksums、快速的故障转移以及 streaming-only remastering 等等。
外部数据封装可写使得系统间支持双路数据交换。今天非常复杂的 IT 环境涉及到多个数据库和半结构化的数据源,而 PG 可帮你将它们集成在一起。该项目同时发布了 postgres_fdw ,这是一个高性能的支持读写的联合驱动程序。
此外,该版本提升了可靠性和可用性,实现了快速的故障转移;数据页的 checksum。此外在复杂的复制环境中,可在故障发生时迅速转移主数据节点。
在针对开发者方面改进包括:

  • 额外的 JSON 构建和解析方法
  • 自动可更新的视图
  • 并行 pg_dump 用于加速大数据库的备份
  • LATERAL JOINs

详细介绍请看发行说明

Category:

comdb - 融合couchbase与mysql的分布式KV存储

K/V数据的优点是结构简单,读写速度快。目前的互联网应用互动数据要求这种级别的存取效率。
沿着当前技术发展趋势设计这么一种分布式的KV存储系统。

comdb中的couchbase系统,本身是一个偏向内存的分布式KV存储系统。
couchbase充分展示了无主分布式系统的优势,集群中所有节点都以相同的模式存取数据,
所有节点在集群中的角色完全一致,集群完全符合大规模水平扩展的需求。

在设计comdb的运行机制时,除了实现两个组件的合并存取,提供一致的访问接口,
还在mysql这层做了大量的工作,模拟couchbase的某些分布机制,
以实现高可用的大规模集群水平扩展与数据自动迁移。
虽然couchbase有自带的磁盘存储,但现有一些开发工程师和运维对新兴的KV存储可靠性尚有些疑虑,
再多应用一层mysql存储,对尽可能保证数据完整非常有帮助。

comdb的设计,主要根据当前计算机技术发展趋势,大内存,快速网络,
弱化磁盘存储的应用,把其作为一个最终可用的磁盘备份。​

用 PHP编写简单MySQL Bridge

许多虚拟主机空间提供MySQL服务,但不提供外部访问服务。

如果需要外部依旧能够使用MySQL服务,需要在虚拟主机上安装一个桥接程序。

当然这种桥接程序提供的是另一套接口了,而不是直接走的mysql协议了。

其他使用这个服务的程序需要改到这套接口调用上。

桥接程序不复杂,最简单的情况下只需要提供一个query接口即可。

拿PHP为例,定义简单接口,实例MySQL服务的桥接接口程序。
服务器端程序pmp.php,定义了一个有两个参数的query接口,
<?php
/**
* @param sql string
* @param params array
*/
/*
settings.php template:
$db_host = "";
$db_port = 3306;
$db_user = "";
$db_pass = "";
$db_name = "";
*/

require('settings.php');

Category:

Pages

Subscribe to RSS - Database


Main menu 2

by Dr. Radut