分类 技术 下的文章

如果你是个Linux命令行用户,你肯定会使用df命令检查文件系统的磁盘使用情况。尽管df是一个受欢迎的命令,但仍然不能提供一些高级的功能,如一个用户实际的磁盘可用空间,以及各种有用的显示格式等。还有另一个命令行实用工具可用,不仅提供了这些高级功能也提供了df的所有特性。在本文中,我们将讨论磁盘信息工具 -- di

注释 - 如果你想了解 df 更多信息, 查看 df命令教程.

di - 磁盘信息工具

从这个di帮助手册页很明显的发现 di 提供了一些很有价值的特性,值得一试。让我们看一些这个工具实际使用的例子。

测试环境

  • OS – Ubuntu 13.04
  • Shell – Bash 4.2.45
  • Application – di 4.30

一个简短的教程

下面是一些 di 工具的示例:

1. 默认的输出

默认情况下di命令生成人们易读的输出格式

这里有个示例:

$ di
Filesystem         Mount               Size     Used    Avail %Used  fs Type 
/dev/sda6          /                  28.1G    20.2G     6.5G   77%  ext4    
udev               /dev                1.5G     0.0G     1.5G    0%  devtmpfs
tmpfs              /run              300.2M     0.9M   299.3M    0%  tmpfs

所以你能发现用千兆字节(G)和兆字节(M)做磁盘使用情况的数据单位。这绝对是比 df 默认的输出产生的效果好。(译注:df也可以输出带类似单位的显示,只是需要额外加参数 -h)

2. 用 -A 选项打印类似挂载点、特殊设备名称等全部字段

选项 -A可以用来极详细的打印挂载点,特殊设备名称等。

这里有个示例:

$ di -A
Mount fs Type  Filesystem 
     Options                             
        Size     Used     Free %Used  %Free 
        Size     Used    Avail %Used  %Free 
        Size     Used    Avail %Used  
       Inodes     Iused     Ifree %Iused
/     ext4     /dev/sda6  
    rw,errors=remount-ro                
       28.1G    20.2G     8.0G   72%    28%  
       28.1G    21.6G     6.5G   77%    23%  
       26.7G    20.2G     6.5G   75%  
      1884160    389881   1494279   21% 
/dev  devtmpfs udev       
    rw,mode=0755                        
        1.5G     0.0G     1.5G    0%   100%  
        1.5G     0.0G     1.5G    0%   100%  
        1.5G     0.0G     1.5G    0%  
       381805       571    381234    0% 
/run  tmpfs    tmpfs      
    rw,noexec,nosuid,size=10%,mode=0755 
      300.2M     0.9M   299.3M    0%   100%  
      300.2M     0.9M   299.3M    0%   100%  
      300.2M     0.9M   299.3M    0%  
       384191       549    383642    0%

所以你可以看到所有的字段,可以用于调试目的时打印输出。

3. 用 -a选项打印所有挂载设备

这里是个示例:

$ di -a
Filesystem         Mount               Size     Used    Avail %Used  fs Type        
/dev/sda6          /                  28.1G    20.2G     6.5G   77%  ext4           
udev               /dev                1.5G     0.0G     1.5G    0%  devtmpfs       
devpts             /dev/pts            0.0M     0.0M     0.0M    0%  devpts         
proc               /proc               0.0M     0.0M     0.0M    0%  proc           
binfmt_misc        /proc/sys/fs/bi     0.0M     0.0M     0.0M    0%  binfmt_misc    
tmpfs              /run              300.2M     0.9M   299.3M    0%  tmpfs          
none               /run/lock           0.0M     0.0M     0.0M    0%  tmpfs          
none               /run/shm            0.0M     0.0M     0.0M    0%  tmpfs          
none               /run/user           0.0M     0.0M     0.0M    0%  tmpfs          
gvfsd-fuse         /run/user/himan     0.0M     0.0M     0.0M    0%  fuse.gvfsd-fuse
sysfs              /sys                0.0M     0.0M     0.0M    0%  sysfs          
none               /sys/fs/cgroup      0.0M     0.0M     0.0M    0%  tmpfs          
none               /sys/fs/fuse/co     0.0M     0.0M     0.0M    0%  fusectl        
none               /sys/kernel/deb     0.0M     0.0M     0.0M    0%  debugfs        
none               /sys/kernel/sec     0.0M     0.0M     0.0M    0%  securityfs

所以你能看到与所有设备相关的所有信息,被打印出来了。

4. 用 -c 选项用逗号作为值的分隔符

选项 -c 用命令分隔的值将附上双引号

这里是个示例:

$ di -c
s,m,b,u,v,p,T
/dev/sda6,/,28.1G,20.2G,6.5G,77%,ext4
udev,/dev,1.5G,0.0G,1.5G,0%,devtmpfs
tmpfs,/run,300.2M,0.9M,299.3M,0%,tmpfs

如上,你可以看到打印了用逗号分隔符输出的值。(译注:这种输出便于作为其他程序的输入解析)

5. 用 -g 选项通过千兆字节(G)打印大小

下面是个示例:

$ di -g
Filesystem         Mount              Gibis     Used    Avail %Used  fs Type 
/dev/sda6          /                   28.1     20.2      6.5   77%  ext4    
udev               /dev                 1.5      0.0      1.5    0%  devtmpfs
tmpfs              /run                 0.3      0.0      0.3    0%  tmpfs

当然,你能看到所有与大小有关的值都用千兆字节(G)打印出来。

同样的你可以用 -k 和 -m 选项来分别的显示千字节(K)大小和兆字节(M)大小。

6. 通过 -I 选项显示特定的文件系统类型的相关信息

假设你想显示只跟tmpfs文件系统相关的信息。下面将告诉你如何用 -I 选项完成任务。

$ di -I tmpfs
Filesystem         Mount               Size     Used    Avail %Used  fs Type
tmpfs              /run              300.2M     0.9M   299.3M    0%  tmpfs  
none               /run/lock           5.0M     0.0M     5.0M    0%  tmpfs  
none               /run/shm            1.5G     0.0G     1.5G    0%  tmpfs  
none               /run/user         100.0M     0.0M   100.0M    0%  tmpfs  
none               /sys/fs/cgroup      0.0M     0.0M     0.0M    0%  tmpfs

Ok 你能看到只有tmpfs类型相关文件系统信息被输出并显示出来了。

7. 用 -n 选项跳过标题行的输出

如果你正试图通过一个脚本(或程序)解析该命令的输出结果并希望 di 命令跳过显示的标题行,那么用 -n 选项是绝佳的方法。

下面是个示例:

$ di -n
/dev/sda6          /                  28.1G    20.2G     6.5G   77%  ext4    
udev               /dev                1.5G     0.0G     1.5G    0%  devtmpfs
tmpfs              /run              300.2M     0.9M   299.3M    0%  tmpfs

如上,你能发现输出中并没有显示标题行。

8. 通过 -t 选项在文件系统列表底下再打印一行总计行

如果想要显示所有相关列的总数,用 -t 选项。

示例:

$ di -t
Filesystem         Mount               Size     Used    Avail %Used  fs Type 
/dev/sda6          /                  28.1G    20.2G     6.5G   77%  ext4    
udev               /dev                1.5G     0.0G     1.5G    0%  devtmpfs
tmpfs              /run              300.2M     0.9M   299.3M    0%  tmpfs   
                   Total              29.9G    20.2G     8.3G   72%

观察到最后一行的值为所有文件系统的统计数据。

9. 通过 -s 选项 排序输出

-s选项可用于排序该命令的输出结果(译注:默认按照挂载点名称排序)

下面告诉你如何反向排序输出:

$ di -sr
Filesystem         Mount               Size     Used    Avail %Used  fs Type
tmpfs              /run              300.2M     0.9M   299.3M    0%  tmpfs
udev               /dev                1.5G     0.0G     1.5G    0%  devtmpfs
/dev/sda6          /                  28.1G    20.2G     6.5G   77%  ext4

你也可以在-s后添加子选项'r'逆序排序输出。

类似的,你可以使用 -s 选项做一些其他类型的排序.以下是摘自man手册供您参考:

-s 排序方式

可以指定排序方式。默认排序方式的按照挂载点的名称进行排序。支持如下的排序方式:

m :按照挂载点名称排序(默认)

n :不排序(即按照在挂载表/etc/fstab中的顺序)

s :按照特殊设备名称

t :按照文件系统类型

r :逆序排序

排序方式可以组合使用,如: di --stsrm :按照类型、设备、挂载点逆序排序。di --strsrm :按照类型、设备逆序、挂载点逆序排序。

10. 通过 -f 选项指定输出格式

你可以通过结合-f选项和其子选项指定输出格式字符串。

例如,用 -fm,打印挂载点的名称。

示例:

$ di -fm
Mount          
/              
/dev          
/run

如上你可以看到只有挂载点的名字被打印出来。

同样的,打印文件系统的类型,用 -ft

示例:

$ di -ft
fsType 
ext4   
devtmpf
tmpfs

如果你想快速查找,这里有个其他可用的格式选项截图.

更完整的选项,参考di命令man文档

下载/安装

这里有一些关于di命令的重要链接:

命令行工具 di 也能通过apt、yum等命令在命令行下载和安装。Ubuntu用户也可以从Ubuntu 软件中心下载这个命令。

优点

  • 提供了许多高级功能
  • 跨平台

缺点

  • 在大多数的Linux发行版没有预装
  • 大量选项需要学习

结论

最后,di命令提供了一些非常有用的特性,比df命令更强大。如果你正在寻找一个类似df,但比df更强大的关于磁盘信息的命令行工具,那么di是最理想的选择。试试吧,包你满意!!!

你试过di或任何其他类似df工具?请跟我们分享你的经验!

via: http://mylinuxbook.com/di-a-disk-information-utility/

译者:Luoxcat 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Ubuntu 13.10 已经发布了,对于那些打算安装“纯净版”的用户,安装完系统后你可以考虑下面的8件事。

1. 安装一些绚丽的小零件

系统负载 是系统监控工具GNOME里的一个小应用。它能在面板上展示出CPU、内存、网络使用、硬盘I/O等信息。点击下面的按钮从Ubuntu软件中心安装。

或者通过命令行进行安装:

sudo apt-get install indicator-multiload

CPU频率是一款等效于“GNOME-CPU调频”的应用。你可以实时的调整CPU的频率。点击下面的按钮从Ubuntu软件中心安装。

或者通过命令行安装:

sudo apt-get install indicator-cpufreq

我的天气是一款显示当前天气的应用,它能显示5天内的预报并支持四大天气服务站点:OpenWeatherMap, Yahoo, Wunderground 和 World Weather Online。

通过命令行进行安装:

sudo add-apt-repository ppa:atareao/atareao

sudo apt-get update

sudo apt-get install my-weather-indicator

Variety一款带有AppIndicator的应用,但是基本上你只需要配置一次就可以用指示器来使用此软件了。Variety是一款很酷的壁纸更换的应用,他能在设定的时间内自动下载并更换壁纸。用起来就有种高帅富的感觉。壁纸库每天都会有更新,你可以很快的切换到另外一个壁纸,收藏自己喜欢的壁纸,留着日后再用。

通过以下命令行安装:

sudo add-apt-repository ppa:peterlevi/ppa

sudo apt-get update

sudo apt-get install variety

你可能还需要一个剪切板管理器,试试Diodon 吧,这是款轻量型软件,支持文件、图像等。点击下面的按钮安装:

或者通过命令行安装:

sudo apt-get install diodon diodon-plugins

2. 设置 Unity

Unity Tweak Tool让用户能改变一些Unity设置,比如:自动隐藏、窗口最大化、“触发角”、Dash、Unity启动器或平视显示器、改变GTK或图标主题、改变字体和大小,移动窗口控制器到右边等。

点击下面的按钮从软件中心安装

或者通过命令行安装

sudo apt-get install unity-tweak-tool

3. 隐私设置

你应该知道可以通过默认的Dash来查看最近访问的文件和其他的一些文件。系统设置可以通过设置“安全和隐私”来选择显示的文件类型。这样就不用看到那些软件、文件夹之类的了。你也可以清除最近的记录。

此外你在使用搜索框的时候,可以设定不显示网络搜索的结果。但是这会屏蔽掉所有的网络信息。所以当你仅仅是想“屏蔽购物推荐”的话,你可以输入下面的命令:

gsettings set com.canonical.Unity.Lenses disabled-scopes "['more_suggestions-amazon.scope', 'more_suggestions-u1ms.scope', 'more_suggestions-populartracks.scope', 'music-musicstore.scope', 'more_suggestions-ebay.scope', 'more_suggestions-ubuntushop.scope', 'more_suggestions-skimlinks.scope']"

更多插件屏蔽,点击此处

另外一种在Ubuntu 13.10中设置隐私的方法是使用隐私指示器,这是一款让你快捷设置启用/屏蔽Zeitgeist 或者在线搜索结果的软件,并能清除Zeitgeist日志和最近文件(显示先边栏的“最近”里面)。

下载 Privacy Indicator(此网页中含有deb文件下载)

4. 使用独立显卡的混合图形功能

Ubuntu的开发人员已经在Ubuntu 13.10 (和 12.04 LTS版 )中实现了混合显卡技术,下面你会看到相关设置的说明。

Nvidia Optimus:不幸的是,Linux平台下Nvidia显卡驱动并不完全支持Optimus,更多

但是Ubuntu 13.10用了“nvidia-prime”包来过渡。这个包使默认支持Intel显卡芯片的Optimus平台也支持Nvidia显卡。通过下面指令你能Nvidia显卡一直处于工作状态,就是说没有办法让它停止工作来节能了。这样笔记本就会功耗更大和过热--——对我而言,我是不会 用这个的,除非过热的问题解决了,如果没有解决的话,你可以取消这个设置。

再次不幸的是,这不是唯一的问题。你会发现画面分割和热插拔并不工作。所以,如果你想用多个显示器的话。你需要手动的在xorg.conf进行设置。这样的好处就是,你可以玩那些不支持Intel显卡的游戏,用支持VDPAU的媒体播放器等。

即便如此,如果你还是想尝试一下的话,请确保你使用的是默认的显示管理器LightDM,并不是其他的,如GDN等。此外,如果你安装了Bumblebee,你需要卸载掉它:

sudo apt-get purge bumblebee* bbswitch-dkms

然后安装最新的Nvidia驱动和“nvidia-prime”:

sudo apt-get install nvidia-319 nvidia-settings-319 nvidia-prime

最后重启电脑(重启X是不够)。

如果你想撤销这些改变,你可以输入通过下面的指令:

sudo apt-get remove nvidia-319 nvidia-settings-319 nvidia-prime

然后重启

AMD 混合显卡:我并没有测试过这个,因为我没有支持AMD显卡的系统,但是根据Ubuntu wiki上的HybridGraphics包说明,应该是没有问题。(再次申明,我并不确定,因为我没试过)

要想在Ubuntu 13.10下获得合适的AMD显卡支持。你需要安装最新的 fglrx驱动和fglrx-pxpress:

sudo apt-get install fglrx fglrx-pxpress

并重启电脑。重启X是没有用的

5. 延长电池寿命

有两个工具可以延长电池的寿命:laptop-mode-tools 和 TLP。这两个工具都是为了延长电池寿命,TLP 似乎效果更好一点,但是TLP仅有PPA,如果你不想添加APPs时,就安装 laptop-mode-tools吧。

注意:不要同时安装laptop-mode-tools和TLP

点击下面的按钮安装laptop-mode-tools。

或者通过命令行安装:

sudo apt-get install laptop-mode-tools

输入下面命令安装TLP:

sudo add-apt-repository ppa:linrunner/tlp

sudo apt-get update

sudo apt-get install tlp tlp-rdw

sudo tlp start

这两个工具都不需要额外的配置。

另外一种节约电池的方法是Bumblebee(是允许在独显运行软件或游戏的工具),Bumblebee是一款支持笔记本上双显卡智能切换的软件。能停止Nvidia显卡,当你不需要使用的时候。

注意:如果你想在显卡自动切换技术的第4步采用混合显卡时,请不要安装Bumblebee

点击下面的按钮进行安装:

或输入下面的命令行:

sudo apt-get install bumblebee bumblebee-nvidia

然后重启。

在Ubuntu中有个禁止"optirun"工作的bug。通过下面的命令解决这个问题。

  • 32位系统
    sudo ln -s /usr/lib/i386-linux-gnu/libturbojpeg.so.0 /usr/lib/i386-linux-gnu/libturbojpeg.so
  • 64位系统
    sudo ln -s /usr/lib/x8664-linux-gnu/libturbojpeg.so.0 /usr/lib/x8664-linux-gnu/libturbojpeg.so

当你想用Nvidia显卡时,运行:

optirun APP-EXECUTABLE

将"APP-EXECUTABLE"替换为你要运行的软件或者游戏的可执行文件。

6. 安装编解码器, Java 和 加密DVD播放

如果需要播放更多类型的音频视频文件,那就安装 Ubuntu Restricted Extras

或者输入下面的命令行:

sudo apt-get install ubuntu-restricted-extras

我建议再安装一下“libavformat 和 libavcodec的无限制版”,这样当你使用一些编辑器或者转换器的时候就不会出现丢失编码丢失的情况。点击下面的按钮进行安装:

或者输入以下命令行:

sudo apt-get install libavformat-extra-53 libavcodec-extra-53

你可能需要Java,但是你得明确你到底需要的是什么,不少用户仅仅使用OpenJRE和java游览器插件,你可以点击下面的按钮安装:

或者输入下面的命令行:

sudo apt-get install icedtea-7-plugin openjdk-7-jre

如果用于开发,你可能需要OpenJDK,点击下面的按钮进行安装:

或者输入下面的命令行:

sudo apt-get install openjdk-7-jdk

如果你因为某些原因需要安装Oracle Java(包含JDK,JRE,游览器插件的包)时,你可以通过下面的命令进行安装Oracle Java 7

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java7-installer

加密DVD播放: 由于现在很多安装包都能在官方的库中找到,或者有更好的替代物,Medibuntu也渐渐的被废弃了。但是在播放加密视频时仍然需要livdvdcss包。

输入以下指令启动加密DVD播放功能:

sudo apt-get install libdvdread4

sudo /usr/share/doc/libdvdread4/install-css.sh

7. 安装最新的 Rhythmbox 和 VLC

在Ubuntu13.10中,Rhythmbox 和 VLC并没有升级到最新的版本,如果你想安装最新的版本,你可以使用PPAs

请注意:升级Rhythmbox后,里面的第三方插件将停止工作。Rhythmbox插件可以正常的运行。

Rhythmbox(Ubuntu 13.10下的版本:2.99.1,PPA中的版本:3.0.1):

sudo add-apt-repository ppa:jacob/media

sudo apt-get update

sudo apt-get install rhythmbox

VLC(Ubuntu 13.10下的版本:2.0.8,PPA中的版本:2.1.0):

sudo add-apt-repository ppa:videolan/stable-daily

sudo apt-get update

sudo apt-get install vlc

8. Tweak Nautilus: 打开被禁用的递归搜索和文件快速预览

在Nautilus V3.6之后,提前键入查找功能就被去除掉了。之后版本的搜索就只是在当前文件夹和其子文件下进行搜索。这用起来就很不爽了,如果你为此感到烦恼的话就安装Nautilus的补丁来启用被禁用的递归搜索(你可以很方便的启用它)。

用下面的命令将Nautilus升级到可以禁用递归搜过的版本

sudo add-apt-repository ppa:dr3mro/personal

sudo apt-get update

sudo apt-get upgrade

nautilus -q

然后使用下面的命令禁用递归搜索

gsettings set org.gnome.nautilus.preferences enable-recursive-search false

如果你还想恢复递归搜索的功能,使用下面的命令行:

gsettings set org.gnome.nautilus.preferences enable-recursive-search true

GNOME Sushi是一款快速预览的软件。点击下面的按钮安装。(会安装gnome-sushi 和 unoconv来实现预览)。

或者输入命令行:

sudo apt-get install gnome-sushi unoconv

要使用这个软件,需选择一个文件(图片、文本文档、音乐文件等)然后点击SPACE按钮来预览。再次点击SPACE按钮或者关闭窗口可以关闭预览。

现在!看完我们的介绍之后,你会选择哪个作为第一个安装的呢?

via: http://www.webupd8.org/2013/10/8-things-to-do-after-installing-ubuntu.html

译者:Timeszoro 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

即使关系型数据库依然是非常有用的工具,但它们持续几十年的垄断地位就要走到头了。现在已经存在无数能撼动关系型数据库地位的 NoSQL,当然,这些 NoSQL 还无法完全取代它们。(也就是说,关系型数据库还是处理关系型事务的最佳方式。)

NoSQL 与 NoSQL 之间的区别,要远大于不同的 SQL 数据库之间的区别,所以软件架构师必须要在项目一开始就选好一款合适的 NoSQL。

考虑到这种情况,本文为大家介绍以下几种 NoSQL 之间的区别:Cassandra, Mongodb, CouchDB, Redis, Riak, Couchbase (ex-Membase), Hypertable, ElasticSearch, Accumulo, VoltDB, Kyoto Tycoon, Scalaris, Neo4jHBase

最流行的 NoSQL

MongoDB 2.2版

开发语言: C++

主要特性: 保留 SQL 中一些用户友好的特性(查询、索引等)

许可证: AGPL (驱动: 采用Apache许可协议)

数据传输格式: 自定义,二进制( BSON 文档格式)

  • 主/从备份(支持自动故障切换功能)
  • 自带数据分片功能
  • 通过 javascript 表达式提供数据查询
  • 服务器端完全支持 javascript 脚本
  • 比 CouchDB 更好的升级功能
  • 数据存储使用内存映射文件技术
  • 功能丰富,性能不俗
  • 最好开启日志功能(使用 --journal 参数)
  • 在 32 位系统中,内存限制在 2.5GB
  • 空数据库占用 192MB 空间
  • 使用 GridFS(不是真正的文件系统)来保存大数据和元数据
  • 支持对地理数据建立索引
  • 可用于数据中心

应用场景:

  • 动态查询
  • 喜欢定义索引,而不是使用 map/reduce 功能
  • 高性能的大数据访问
  • 想使用 CouchDB 但数据变化频度太大

使用案例:

想布署 MySQL 或 PostgreSQL,但预先定义数据字典让你望而却步。这个时候,MongoDB 是你可以考虑的选项

Riak 1.2版

开发语言: Erlang、C、以及一些 JavaScript

主要特性: 容错机制(当一份数据失效,服务会自动切换到备份数据,保证服务一直在线 —— 译者注)

许可证: Apache

数据传输格式: HTTP/REST 架构,或自定义二进制格式

  • 可存储 BLOB(binary large object,二进制大对象,比如一张图片、一个声音文件 —— 译者注)
  • 可在分布式存储和复制存储之间作协调
  • 为了保证可验证性和安全性,Riak 在 JS 和 Erlaing 中提供提交前(pre-commit)和提交后(post-commit)钩子(hook)函数(你可以在提交数据前执行一个 hook,或者在提交数据后执行一个 hook —— 译者注)
  • JS 和 Erlang 提供映射和简化(map/reduce)编程模型
  • 使用 links 和 link walking ,用于图形化数据库(link 用于描述对象之间的关系,link walking 是一个用于查询对象关系的进程 —— 译者注)
  • 次要标记(secondaty indeces,开发者在写数据时可用多个名称来标记一个对象 —— 译者注),一次只能用一个
  • 支持大数据对象(Luwak)(Luwak 是 Riak 中的一个服务层,为大数据量对象提供简单的、面向文档的抽象,弥补了 Riak 的 Key/Value 存储格式在处理大数据对象方面的不足 —— 译者注)
  • 提供“开源”和“企业”两个版本
  • 基于Riak搜索的全文检索、建立索引和查询
  • 正在将存储后端从“Bitcask”迁移到 Google 的“LevelDB”上
  • 企业版本提供无主模式的多点复制(各点地位平等,非主从架构)和SNMP监控功能

应用场景:

  • 假如你想要类似 Dynamo 的数据库,但不想要它的庞大和复杂
  • 假如你需要良好的单点可扩展性、可用性和容错能力,但不想为多点备份买单。

使用案例:

销售点数据收集;工厂控制系统;必须实时在线的系统;需要易于升级的网站服务器

CouchDB 1.2版

开发语言: Erlang

主要特性: 数据一致性;易于使用

许可证: Apache

数据传输格式: HTTP/REST

  • 双向复制!(一种同步技术,每个备份点都有一份它们自己的拷贝,允许用户在存储点断线的情况下修改数据,当存储节点重新上线时,CouchDB 会对所有节点同步这些修改 —— 译者注)
  • 支持持续同步或者点对点同步
  • 支持冲突检测
  • 支持主主互备!(多个数据库实时同步数据,起到备份和分摊用户并行访问量的作用 —— 译者注)
  • 多版本并发控制(MVCC),写操作时不需要阻塞读操作(或者说不需要锁住数据库的读取操作)
  • 向下兼容以前版本的数据
  • 可靠的 crash-only 设计(所谓 crash-only,就是程序出错时,只需重启下程序,丢弃内存的所有数据,不需要执行复杂的数据恢复操作 —— 译者注)
  • 需要实时压缩数据
  • 视图(文档是 CouchDB 的核心概念,CouchDB 中的视图声明了如何从文档中提取数据,以及如何对提取出来的数据进行处理 —— 译者注):内嵌映射和简化(map/reduce)编程模型
  • 格式化的views字段:lists(包含把视图运行结果转换成非 JSON 格式的方法)和 shows(包含把文档转换成非 JSON 格式的方法)(在 CouchDB 中,一个 Web 应用是与一个设计文档相对应的。在设计文档中可以包含一些特殊的字段,views 字段包含永久的视图定义 —— 译者注)
  • 能够进行服务器端文档验证
  • 能够提供身份认证功能
  • 通过 \_changes 函数实时更新数据!
  • 链接处理(attachment:couchDB 的每份文档都可以有一个 attachment,就像一份 email 有它的网址 —— 译者注)
  • 有个 CouchApps(第三方JS的应用)

应用场景:

  • 用于随机数据量多、需要预定义查询的地方
  • 用于版本控制比较重要的地方

使用案例:

可用于客户关系管理(CRM),内容管理系统(CMS);可用于主主互备甚至多机互备

Redis 2.4版

开发语言: C/C++

主要特性: 快到掉渣

许可证: BSD

数据传输格式: 类似 Telnet 式的交换

  • Redis 是一个内存数据库(in-memory database,简称 IMDB,将数据放在内存进行读写,这才是“快到掉渣”的真正原因 —— 译者注),磁盘只是提供数据持久化(即将内存的数据写到磁盘)的功能(这类数据库被称为“disk backed”数据库)
  • 当前不支持将磁盘作为 swap 分区,虚拟内存(VM)和 Diskstore 方式都没加到此版本(Redis 的数据持久化共有4种方式:定时快照、基于语句追加、虚拟内存、diskstore。其中 VM 方式由于性能不好以及不稳定的问题,已经被作者放弃,而 diskstore 方式还在实验阶段 —— 译者注)
  • 主从备份
  • 存储结构为简单的 key/value 或 hash 表
  • 但是操作比较复杂,比如:ZREVRANGEBYSCORE
  • 支持 INCR(INCR key 就是将key中存储的数值加一 —— 译者注)命令(对限速和统计有帮助)
  • 支持sets数据类型(以及 union/diff/inter)
  • 支持 lists (以及 queue/blocking pop)
  • 支持 hash sets (多级对象)
  • 支持 sorted sets(高效率的表,在范围查找方面有优势)
  • 支持事务处理!
  • 缓存中的数据可被标记为过期
  • Pub/Sub 实现了消息订阅和推送!

应用场景:

  • 适合布署快速多变的小规模数据(可以完全运行在存在中)

使用案例:

股价系统、分析系统、实时数据收集系统、实时通信系统、以及取代 memcached

Google Bigtable 的衍生品

HBase 0.92.0 版

开发语言: Java

主要特性: 支持几十亿行*几百万列的大表

许可证: Apache

数据传输格式: HTTP/REST (也支持 Thrift 开发框架)

  • 仿造 Google 的 BigTable
  • 使用 Hadoop 的 HDFS 文件系统作为存储
  • 使用 Hadoop 的映射和简化(map/reduce)编程模型
  • 查询条件被推送到服务器端,由服务器端执行扫描和过滤
  • 对实时查询进行优化
  • 高性能的 Thrift gateway(访问 HBase 的接口之一,特点是利用 Thrift 序列化支持多种语言,可用于异构系统在线访问 HBase 表数据 —— 译者注)
  • 使用 HTTP 通信协议,支持 XML、Protobuf 以及二进制格式
  • 支持基于 Jruby(JIRB)的shell
  • 当配置信息有更改时,支持 rolling restart(轮流重启数据节点)
  • 随机读写性能与 MySQL 一样
  • 一个集群可由不同类型的结点组成

应用场景:

  • Hadoop 可能是在大数据上跑 Map/Reduce 业务的最佳选择
  • 如果你已经搭建了 Hadoop/HDFS 架构,HBase 也是你最佳的选择。

使用案例:

搜索引擎;日志分析系统;扫描大型二维非关系型数据表。

Cassandra 1.2版

开发语言: Java

主要特性: BigTable 和 Dynamo的完美结合(Cassandra 以 Amazon 专有的完全分布式的 Dynamo 为基础,结合了Google BigTable基于 Column Family 的数据模型 —— 译者注)

许可证: Apache

数据传输格式: Thrift 和自定义二进制 CQL3(即 Cassandra 查询语言第3版 —— 译者注)

  • 可以灵活调整对数据的分布式或备份式存储(通过设置N,R,W之间的关系)(NRW是数据库布署模型中的概念,N是存储网络中复制数据的节点数,R是网络中读数据的节点数,W是网络中写数据的节点数。一个环境中N值是固定的,设置不同的WR值组合能在数据可用性和数据一致性之间取得不同的平衡,可参考 CAP 定理 —— 译者注)
  • 按列查询,按keys值排序后存储(需要包含你想要搜索的任何信息)(Cassandra 的数据模型借鉴自 BigTable 的列式存储,列式存储可以理解成这样,将行ID、列簇号,列号以及时间戳一起,组成一个Key,然后将Value按Key的顺序进行存储 —— 译者注)
  • 类似 BigTable 的特性:列、列簇
  • 支持分布式 hash 表,使用“类 SQL” 语言 —— CQL(但没有 SQL 中的 JOIN 语句)
  • 可以为数据设置一个过期时间(使用 INSERT 指令)
  • 写性能远高于读性能(读性能的瓶颈是磁盘 IO)
  • 可使用 Hadoop 的映射和简化(map/reduce)编程模型
  • 所有节点都相似,这点与 Hadop/HBase 架构不同
  • 可靠的跨数据中心备份解决方案

应用场景:

  • 写操作多于读操作的环境(比如日志系统)
  • 如果系统全部由 JAVA 组成(“没人会因为使用了 Apache 许可下的产品而被炒鱿鱼”(此句貌似是网上有人针对“Apache considered harmful”一文所作的回应 —— 译者注))

使用案例:

银行、金融机构;写性能强于读性能,所以 Cassandra 天生就是用来作数据分析的。

Hypertable 0.9.6.5版

开发语言: C++

主要特性: HBase 的精简版,但比 HBase 更快

许可证: GPL 2.0

数据传输格式: Thrift,C++库,或者 HQL shell

  • 采用与 Google BigTable 相似的设计
  • 运行在 Hadoop HDFS 之上
  • 使用自己的“类 SQL”语言 —— HQL
  • 可以根据 key 值、单元(cell)进行查找,可以在列簇上查找
  • 查询数据可以指定 key 或者列的范围
  • 由百度公司赞助(百度早在2009年就成为这个项目的赞助商了 —— 好吧译者表示有点大惊小怪了:P)
  • 能保留一个值的 N 个历史版本
  • 表在命名空间内定义
  • 使用 Hadoop 的 Map/reduce 模型

应用场景:

  • 假如你需要一个更好的HBase,就用Hypertable吧

使用案例:

与HBase一样,就是搜索引擎被换了下;分析日志数据的系统;适用于浏览大规模二维非关系型数据表。

Accumulo 1.4版

开发语言: Java 和 C++

主要特性: 一个有着单元级安全的 BigTable

许可证: Apache

数据传输格式: Thrift

  • 另一个 BigTable 的复制品,也是跑在 Hadoop 的上层
  • 单元级安全保证
  • 允许使用比内存容量更大的数据列
  • 通过 C++ 的 STL 可保持数据从 JAVA 环境的内存映射出来
  • 使用 Hadoop 的 Map/reduce 模型
  • 支持在服务器端编程

应用场景:

  • HBase的替代品

使用案例:

与HBase一样,就是搜索引擎被换了下;分析日志数据的系统;适用于浏览大规模二维非关系型数据表。

特殊用途

Neo4j V1.5M02 版

开发语言: Java

主要特性: 图形化数据库

许可证: GPL,AGPL(商业用途)

数据传输格式: HTTP/REST(或内嵌在 Java 中)

  • 可独立存在,或内嵌在 JAVA 的应用中
  • 完全的 ACID 保证(包括正在处理的数据)
  • 节点和节点的关系都可以拥有原数据
  • 集成基于“模式匹配”的查询语言(Cypher)
  • 支持“Gremlin”图形转化语言
  • 可对节点与节点关系进行索引
  • 良好的自包含网页管理技术
  • 多个算法实现高级文件查找功能
  • 可对 key 与 key 的关系进行索引
  • 优化读性能
  • 在 JAVA API 中实现事务处理
  • 可运行脚本 Groovy 脚本
  • 在商用版本中提供在线备份,高级监控和高可用性功能

应用场景:

  • 适用于用图形显示复杂的交互型数据。

使用案例:

搜寻社交关系网、公共传输链、公路路线图、或网络拓扑结构

ElasticSearch 0.20.1 版

开发语言: Java

主要特性: 高级搜索

许可证: Apache

数据传输格式: 通过 HTTP 使用 JSON 进行数据索引(插件:Thrift, memcached)

  • 以 JSON 形式保存数据
  • 提供版本升级功能
  • 有父文档和子文档功能
  • 文档有过期时间
  • 提供复杂多样的查询指令,可使用脚本
  • 支持写操作一致性的三个级别:ONE、QUORUM、ALL
  • 支持通过分数排序
  • 支持通过地理位置排序
  • 支持模糊查询(通过近似数据查询等方式实现)
  • 支持异步复制
  • 自动升级,也可通过设置脚本升级
  • 可以维持自动的“统计组”(对调试很有帮助)
  • 只有一个开发者(kimchy)

应用场景:

  • 当你有可伸缩性很强的项目并且想拥有“高级搜索”功能。

使用案例:

可布署一个约会服务,提供不同年龄、不同地理位置、不同品味的客户的交友需求。或者可以布署一个基于多项参数的排行榜。

其他

(不怎么有名,但值得在这里介绍一下)

Couchbase (ex-Membase) 2.0 版

开发语言: Erlang 和 C

主要特性: 兼容 Memcache,但数据是持久化的,并且支持集群

许可证: Apache

数据传输格式: 缓存和扩展(memcached + extensions)

  • 通过 key 访问数据非常快(20万以上IOPS)
  • 数据保存在磁盘(不像 Memcache 保存在内存中 —— 译者注)
  • 在主主互备中,所有节点数据是一致的
  • 提供类似 Memcache 将数据保存在内存的功能
  • 支持重复数据删除功能
  • 友好的集群管理 Web 界面
  • 支持池和多丛结构的代理(利用 Moxi 项目)
  • 支持 Map/reduce 模式
  • 支持跨数据中心备份

应用场景:

  • 适用于低延迟数据访问系统,高并发和高可用系统。

使用案例:

低延迟可用于广告定投;高并发可用于在线游戏(如星佳公司)。

VoltDB 2.8.4.1版

开发语言: Java

主要特性: 快速的事务处理和数据变更

许可证: GPL 3

数据传输格式: 专有方式

  • 运行在内存的关系型数据库
  • 可以将数据导入到 Hadoop
  • 支持 ANSI SQL
  • 在 JAVA 环境中保存操作过程
  • 支持跨数据中心备份

应用场景:

  • 适用于在大量传入数据中保证快速反应能力的场合。

使用案例:

销售点数据分析系统;工厂控制系统。

Scalaris 0.5版

开发语言: Erlang

主要特性: 分布式 P2P 键值存储

许可证: Apache

数据传输和存储的方式: 自有方式和 基于JSON的远程过程调用协议

  • 数据保存在内存中(使用 Tokyo Cabinet 作为后台时,数据可以持久化到磁盘中)
  • 使用 YAWS 作为 Web 服务器
  • Has transactions (an adapted Paxos commit)
  • 支持事务处理(基于 Paxos 提交)(Paxos 是一种基于消息传递模型的一致性算法 —— 译者注)
  • 支持分布式数据的一致性写操作
  • 根据 CAP 定理,数据一致性要求高于数据可用性(前提是在一个比较大的网络分区环境下工作)(CAP 定理:数据一致性consistency、数据可用性availability、分隔容忍partition tolerance是分布式计算系统的三个属性,一个分布式计算系统不可能同时满足全部三项)

应用场景:

  • 如果你喜欢 Erlang 并且想要使用 Mnesia 或 DETS 或 ETS,但你需要一个能使用多种语言(并且可扩展性强于 ETS 和 DETS)的技术,那就选它吧。

使用案例:

使用基于 Erlang 的系统,但是想通过 Python、Ruby 或 JAVA 访问数据库

Kyoto Tycoon 0.9.56版

开发语言: C++

主要特性: 轻量级网络数据库管理系统

许可证: GPL

数据传输和存储的方式: HTTP (TSV-RPC or REST)

  • 基于 Kyoto Cabinet, 是 Tokyo Cabinet 的成功案例
  • 支持多种存储后端:Hash,树、目录等等(所有概念都是从 Kyoto Cabinet 那里来的)
  • Kyoto Cabinet 可以达到每秒100万次插入/查询操作(但是 Tycoon 由于瓶颈问题,性能比 Cabinet 要差点)
  • 服务器端支持 Lua 脚本语言
  • 支持 C、JAVA、Python、Ruby、Perl、Lua 等语言
  • 使用访问者模式开发(visitor patten:让开发者能在不修改类层次结构的前提下,定义该类层次结构的操作 —— 不明白就算了,译者也不明白)
  • 支持热备、异步备份
  • 支持内存数据库在后端执行快照
  • 自动过期处理(可用来布署一个缓存服务器)

应用场景:

  • 当你想要一个很精准的后端存储算法引擎,并且速度是刚需的时候,玩玩 Kyoto Tycoon 吧。

使用案例:

缓存服务器;股价查询系统;数据分析系统;实时数据控制系统;实时交互系统;memcached的替代品。

当然,上述系统的特点肯定不止列出来这么点。我只是列出了我认为很关键的信息。另外科技发展迅猛,技术改变得非常快。

附:现在下定论比较孰优孰劣还为时过早。上述数据库的版本号以及特性我会一个一个慢慢更新。相信我,这些数据库的特性不会变得很快。

via: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Ubuntu是一款很不错的操作系统。它基本上可以做到任何现代操作系统能做的事情,甚至有时候能做的更好。如果你是一个ubuntu新手,那么你现在还有很多不知道的事情。对于那些专家级用户来说十分普通的事情可能对你来说可能就不太普通了,因此这个“ubuntu每日小技巧”系列旨在帮助你和新用户轻松设置管理ubuntu。

Ubuntu有一个菜单栏。这个主菜单栏是在屏幕的顶端黑色条状栏,其包含了状态菜单或指示器和时间日期,音量键,应用的菜单和窗口管理按钮。

窗口管理按钮在主菜单(黑色条状栏)的左上角。当年你打开一个程序的时候,主菜单左上角的按钮包括关闭、最小化、最大化、和恢复大小按钮,这些按钮叫做窗口管理按钮。

应用的菜单位于窗口管理按钮的右侧。当应用打开时才显示应用菜单。

默认情况下,ubuntu隐藏了窗口应用菜单和管理按钮,只有当你把鼠标放在左侧角里的时候才能看到。如果你打开一个程序但是找不到菜单,只需要把你的鼠标移动到屏幕左上角就可以使它显示出来。

如果这让你很困惑,而且你想关闭(全局的)应用菜单而使每个程序都有自己的菜单的话,继续向下看。

运行以下命令以安装或删除应用菜单:

sudo apt-get autoremove indicator-appmenu

运行上面的命令将会删除应用菜单即全局菜单。现在,为了使改变生效,先退出然后再登录回来。

现在,当你打开一个ubuntu里面的程序的时候,每个程序就会用显示自己的菜单代替把它隐藏在全局菜单或主菜单里。

就是这样! 想返回原来的状态的话,运行下面的命令:

sudo apt-get install indicator-appmenu

使用愉快!

via: http://www.liberiangeek.net/2013/09/daily-ubuntu-tips-understanding-app-menus-buttons/

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:crowner 校对:wxy

几天之前,我们向大家展示了如何在Ubuntu中改变您的home文件夹,以便只有授权用户才能够看到您文件夹中的内容。我们说过,“adduser”命令创建的用户目录,目录里面内容是所有人可读的。这意味着:默认情况下,您的机器上所有有帐号的用户,都能够浏览您home文件夹里面的内容。

要想阅读之前的文章,请点击这里.在那篇文章中,我们还介绍了如何设置权限,可以让您的home文件夹不被任何人浏览。

在这篇博客里,还可以看到如何通过加密文件目录的方式来获得同样的效果。当home文件夹被加密后,未经授权的用户将既不能看到也不能访问该目录。

加密home文件夹并不是在每个环境中对每个人都适用,所以在实际使用该功能之前,请确信自己真的需要它。

要使用加密home目录的功能,请登录到Ubuntu并运行以下命令。

sudo apt-get install ecryptfs-utils

你是无法在登录后加密当前home文件夹的,必须创建一个临时账户并登录进去。之后再运行下面这些命令,来加密你的home文件夹。

使用你当前的账户名代替下面的USERNAME。

sudo ecryptfs-migrate-home -u USERNAME

当以临时用户的身份登录后,为使你的帐号拥有root或admin权限,就需要以自己的身份运行 su+用户名的命令。系统会提示你输入密码。

su USERNAME

使用具有使用root或admin权限的帐号(译注:即拥有su权限的账号)代替USERNAME。

在这之后,运行 ecryptfs-migrate-home –u USERNAME 命令加密home文件夹。

使用被加密的账号第一次登录后,你将会看到如下截图的界面,包含更多关于加密home文件夹的信息。

要创建带有加密home目录的用户,运行下面的命令:

adduser –encrypt-home USERNAME

试试看吧!

via: http://www.liberiangeek.net/2013/09/daily-ubuntu-tips-protect-home-folders/

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:rogetfan 校对:jasminepeng

Rhythmbox 3.0已经发布了超过一个月了,这个版本改进了用户界面,使用Python 3来支持插件。很可惜,新版本并没有集成到13.10里面,但是你可以使用PPA来安装它(Ubuntu 13.04也支持)。

Rhythmox 3.0的新功能:

  • 插件现在使用Python 3;
  • 新的任务进度显示在曲目列表的下方(可以供很多东西使用包括包括轨道更换和导入作业等);
  • 支持作曲家标签;
  • 重新制作了播放控制栏;
  • 使用象征性的图片重新设计了源列表;
  • 所有东西都更好的优化过;
  • 通过不同的公开属性将CBR和VBR编码方式区分开;
  • 播放列表设置内容(浏览方式等)保存到playlists.xml文件;
  • 在适当情况下更好的使用了RTL图标;
  • 修复了IM状态和ReplayGain插件;
  • 修复了其他很多漏洞。

能在这里找到完整的Rhythmbox 3.0更新日志。

在Ubuntu 13.10或者13.04下安装Rhythmbox 3.0

Ubuntu 13.10 (Unity)下的Rhythmbox 3.0

因为Rhythmbox 3.0的插件使用Python 3而不是Python 2, 第三方插件 PPA里面的插件都不能在Rhythmbox里面使用了 。你可以通过手动安装的方式来使用它们中的一些(包括Equalizer插件和超酷的CoverArt browser

  • 更多信息请看这篇文章。

Rhythmbox 3.0现在可以在一个非官方PPA里面找到,它是由Jacob Zimmermann维护,为Ubuntu 13.10和13.04(及衍生系统)准备。通过以下命令添加这个PPA然后安装/升级Rhythmbox 3.0:

sudo add-apt-repository ppa:jacob/media

sudo apt-get update

sudo apt-get install rhythmbox

来自: http://www.webupd8.org/2013/10/install-rhythmbox-30-in-ubuntu-1310-or.html

本文由 LCTT 原创翻译,Linux中国 荣誉推出

译者:SCUSJS 校对:Caroline