分类目录 ‘Database’

数据备份非常重要,无论是为了避免系统发生故障造成损失,还是平日对重要数据进行管理。当然你可以选择使用第二个硬盘对数据进行备份管理,问题是如 果可以不花钱就能做到这一点,何乐而不为?此外,你也很难保证你的第二块硬盘不不会发生故障吧。因此,选择一些有保证的在线存储备份服务是非常不错的主 意。

online storage

在线存储工具非常之多,在去年年底我为大家总结了“2010年最佳国外免费在线存储服务”。现在再为大家介绍5款优秀的免费在线数据备份存储工具:

Windows Live SkyDrive

Windows Live Sky Drive
Windows Live Skydrive是非常流行的基于云计算的服务,提供25GB的免费存储空间。SkyDrive的使用非常简单,首先使用你的Live ID登录为Windows Live Skydrive账户。然后就像简单的拖放文件那样就行了,你可以根据需要在不同文件夹间拖放文件。每一个文件夹都有一个固定链接,这样你就可以轻易地与 你的朋友、家人或者网友进行分享。此外,你可以对个人私密文件夹进行加密保护。
(全文 …)

MySQL Query Cache 小结

作者: seasun

顾名思义, Query Cache 就是用来缓存和 Query 相关的数据的。具体来说,Query Cache 缓存了我们客户端提交给 的 SELECT 语句以及该语句的结果集。大概来讲,就是将 SELECT 语句和语句的结果做了一个 HASH 映射关系然后保存在一定的内存区域中。

在大部分的 MySQL 分发版本中,Query Cache 功能默认都是打开的,我们可以通过调整 MySQL Server 的参数选项打开该功能。主要由以下5个参数构成:

  • query_cache_limit:允许 Cache 的单条 Query 结果集的最大容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 Cache
  • query_cache_min_res_unit:设置 Query Cache 中每次分配内存的最小空间大小,也就是每个 Query 的 Cache 最小占用的内存空间大小
  • query_cache_size:设置 Query Cache 所使用的内存大小,默认值为0,大小必须是1024的整数倍,如果不是整数倍,MySQL 会自动调整降低最小量以达到1024的倍数
  • query_cache_type:控制 Query Cache 功能的开关,可以设置为0(OFF),1(ON)和2(DEMAND)三种,意义分别如下:
    • 0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query Cache
    • 1(ON):开启 Query Cache 功能,但是当 SELECT 语句中使用的 SQL_NO_CACHE 提示后,将不使用Query Cache
    • 2(DEMAND):开启 Query Cache 功能,但是只有当 SELECT 语句中使用了 SQL_CACHE 提示后,才使用 Query Cache
  • query_cache_wlock_invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。

(全文 …)

【编者按】NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面。今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会。


非常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL的发展,希望跟我一样有兴趣的朋友加入进来。这次的NoSQL专栏系列将先整体介绍NoSQL,然后介绍如何把NoSQL运用到自己的项目中合适的场景中,还会适当地分析一些成功案例,希望有成功使用NoSQL经验的朋友给我提供一些线索和信息。

NoSQL概念

随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。(“”一词最早于1998年被用于一个轻量级的关系数据库的名字。)

NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。在NoSQL概念提出之前,这些数据库就被用于各种系统当中,但是却很少用于web互联网应用。比如cdb、qdbm、bdb数据库。
(全文 …)

今天下载了《 The Definitive Guide》电子版,浏览了里面的内容,还是挺丰富的。是官网文档实际应用方面的一个补充。和官方文档类似,介绍MongoDB的内容是少之又少,只有在 附录的一个章节中介绍了相关内容。

对于大多数的MongoDB的用户来说,MongoDB就像是一个大黑盒,但是如果你能够了解到 MongoDB内部一些构造的话,将有利于你更好地理解和使用MongoDB。

BSON

在MongoDB中,文 档是对数据的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各种语言的Driver)都会使用这种抽象,它的表现形式 就是我们常说的BSON(Binary JSON )。

BSON是一个轻量级的二进制数据格式。MongoDB能够使用BSON,并将 BSON作为数据的存储存放在磁盘中。

当Client端要将写入文档,使用查询等等操作时,需要将文档编码为BSON格式,然后再发送 给Server端。同样,Server端的返回结果也是编码为BSON格式再放回给Client端的。
(全文 …)

之alter语句用法总结

1:删除列

ALTER TABLE 【表名字】 DROP 【列名称】

2:增加列

ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT ‘注释说明’

3:修改列的类型信息

ALTER TABLE 【表名字】 CHANGE 【列名称】【新列名称(这里可以用和原来列同名即可)】 BIGINT NOT NULL COMMENT ‘注释说明’
(全文 …)

标题貌似有点蛊惑人心,但不得不说,本文分享的PPT,是一篇非同一般的技巧和知识合集。

虽然MongoDB是开源软件,但由于其庞大的代码量和稳定的公司支持,使得深入内核去研究其源码的同学非常之少,对于很多内部机制,仅凭官方文档 的解释很难让我们了解。相信下面的PPT不会让你失望。

(全文 …)

MongoDB系列文章推荐

作者: seasun

今天才发现这么一系列的学习笔记,绝对算是一个失误。下面是一个长达十节的MongoDB系列文章,几乎可以称作简单的中文文档。非常实用而系统。

MongoDB: 10. MapReduce

作者: seasun

上使用 Map/Reduce 进行并行 “统计” 很容易。

db.runCommand(
{
    mapreduce : <collection>,
    map : <mapfunction>,
    reduce : <reducefunction>
    [, query : <query filter object>]
    [, sort : <sort the query.  useful   optimization>] for
    [, limit : <number of objects to   from collection>] return
    [, out : <output-collection name>]
    [, keeptemp: < | >] true false
    [, finalize : <finalizefunction>]
    [, scope : <object where fields go into javascript global scope >]
    [, verbose :  ] true
});

(全文 …)

MongoDB: 9. Grid FS

作者: seasun

GridFS 的文件同样是保存在 db.collection 中,通常使用 fs.files 存储文件元数据信息,fs.chunks 存储文件内容。

存储海量文件,得启用 Auto-Sharding。

> admin.runCommand({ enablesharding: test })
> admin.runCommand({ shardcollection: test.fs.chunks, key:{files_id:1} })

PyMongo API 中有个 GridFS 对象,使用方法很简单。

>>> from pymongo import *
>>> from pymongo.objectid import ObjectId
>>> from gridfs import *
>>> from pprint import pprint

>>> conn = Connection()
>>> db = conn.test
>>> gfs = GridFS(db)

随便找个文件存到 GridFS 中,除了必须的 filename 外,还可以附加任意属性。
(全文 …)

MongoDB: 8. Sharding (2)

作者: seasun

Auto-Sharding 解决了海量存储和动态扩容的问题,但离实际生产环境所需的高可靠(high reliability)、高可用(high availability)还有些距离。

解决方案:

  • Shard: 使用 Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。
  • Config: 使用 3 个配置服务器,确保元数据完整性(two-phase commit)。
  • Route: 配合 LVS,实现负载平衡,提高接入性能(high performance)。

以下我们配置一个 Replica Sets + Sharding 测试环境。
装个配置过程建议都用 IP 地址,以免出错。
(全文 …)