显示: 预览 | 列表

NoSQL 数据建模技术

本文由 酷壳coolshell 译自墙外文章“NoSQL Data Modeling Techniques”。

 

这篇文章看完之后,你可能会对NoSQL的数据结构会有些感觉。我的感觉是,关系型数据库想把一致性,完整性,索引,CRUD都干 好,NoSQL只干某一种事,但是牺牲了很多别的东西。总体来说,我觉得NoSQL更适合做Cache。

 

下面是正文——

 

NoSQL 数据库经常被用作很多非功能性的地方,如,扩展性,性能和一致性的地方。这些NoSQL的特性在理论和实践中都正在被大众广泛地研究着,研究的热点正是那些和性能分布式相关的非功能性的东西,我们都知道 CAP 理论被 很好地应用于了 NoSQL 系统中(陈皓注:CAP即,一致性(Consistency), 可用性(Availability), 分区容忍性(Partition tolerance),在分布式系统中,这三个要素最多只能同时实现两个,而NoSQL一般放弃的是一致性)。但在另一方面,NoSQL的数据建模技术却 因为缺乏像关系型数据库那样的基础理论没有被世人很好地研究。这篇文章从数据建模方面对NoSQL家族进行了比较,并讨论几个常见的数据建模技术。

 

要开始讨论数据建模技术,我们不得不或多或少地先系统地看一下NoSQL数据模型的成长的趋势,以此我们可以了一些他们内在的联系。下图是 NoSQL家族的进化图,我们可以看到这样的进化:Key-Value时代,BigTable时代,Document时代,全文搜索时代,和Graph数 据库时代:(陈皓注:注意图中SQL说的那句话,NoSQL再这样发展下去就是SQL了,哈哈。)

 


NoSQL Data Models


阅读全文...
分类: Database - NoSQL  评论: 0  浏览: 8

Ubuntu下安装PHP-FPM

以下是fabric脚本:
  1. def init_nmp():  
  2. install_nginx()  
  3. install_php()  
  4. install_phpfpm()  
  5.   
  6. def install_nginx():  
  7. sudo("add-apt-repository ppa:nginx/stable")  
  8. sudo("apt-get update")  
  9. sudo("apt-get -y -q install nginx-full nginx-common")  
  10.   
  11. def install_php():  
  12. # More packages upon request  
  13. sudo("apt-get -y -q --force-yes install php5-cli php5-cgi php5-mysql")  
  14. sudo("apt-get -y -q --force-yes install php5-mcrypt libmcrypt mcrypt")  
  15.   
  16. def install_phpfpm():  
  17. # TODO: use canonical php-fpm package when available  
  18. sudo("add-apt-repository ppa:brianmercer/php")  
  19. sudo("apt-get update")  
  20. sudo("apt-get -y -q install php5-fpm"


在/etc/php5/fpm/php5-fpm.conf里将tcp修改成unix socket方式,单机情况下性能更好。

  1. listen = /var/run/php5-fpm.sock  
  2. ;listen = 127.0.0.1:9000 


Nginx里的配置:

  1. location ~ \.php$ {  
  2. try_files $uri = 404;  
  3. include /etc/nginx/fastcgi_params;  
  4. fastcgi_pass unix:/var/run/php5-fpm.sock;  
  5. fastcgi_index index.php;  
  6.   
  7. fastcgi_split_path_info ^(.+\.php)(.*)$;  
  8. include fastcgi_params;  
  9. fastcgi_intercept_errors on;  
  10. fastcgi_ignore_client_abort off;  
  11. fastcgi_connect_timeout 60;  
  12. fastcgi_send_timeout 180;  
  13. fastcgi_read_timeout 180;  
  14. fastcgi_buffer_size 128k;  
  15. fastcgi_buffers 4 256k;  
  16. fastcgi_busy_buffers_size 256k;  
  17. fastcgi_temp_file_write_size 256k;  



阅读全文...
分类: Server - Linux  评论: 0  浏览: 20

PHP的表单类 Zebra_Form

Zebra_Form 是一个 PHP 类用于简化表单的创建和数据验证。

示例代码:


  1. <?php  
  2. // include the Zebra_Form class  
  3. require 'path/to/Zebra_Form.php';  
  4.   
  5. // instantiate a Zebra_Form object  
  6. $form = new Zebra_Form('form');  
  7.   
  8. // the label for the "email" field  
  9. $form->add('label''label_email''email''Email');  
  10.   
  11. // add the "email" field  
  12. // the "&" symbol is there so that $obj will be a reference to the object in PHP 4  
  13. // for PHP 5+ there is no need for it  
  14. $obj = & $form->add('text''email'''array('autocomplete' => 'off'));  
  15.   
  16. // set rules  
  17. $obj->set_rule(array(  
  18.     // error messages will be sent to a variable called "error", usable in custom templates  
  19.     'required'  =>  array('error''Email is required!'),  
  20.     'email'     =>  array('error''Email address seems to be invalid!'),  
  21. ));  
  22.   
  23. // "password"  
  24. $form->add('label''label_password''password''Password');  
  25. $obj = & $form->add('password''password'''array('autocomplete' => 'off'));  
  26. $obj->set_rule(array(  
  27.     'required'  => array('error''Password is required!'),  
  28.     'length'    => array(6, 10, 'error''The password must have between 6 and 10 characters'),  
  29. ));  
  30.   
  31. // "remember me"  
  32. $form->add('checkbox''remember_me''yes');  
  33. $form->add('label''label_remember_me_yes''remember_me_yes''Remember me');  
  34.   
  35. // "submit"  
  36. $form->add('submit''btnsubmit''Submit');  
  37.   
  38. // validate the form  
  39. if ($form->validate()) {  
  40.     // do stuff here  
  41. }  
  42. // auto generate output, labels above form elements  
  43. $form->render();  
  44. ?> 


阅读全文...
分类: Progamming - Php  评论: 0  浏览: 11

25 个精美的后台管理界面模板和布局

任何系统都会有一个管理后台,好看的管理后台看起来赏心悦目,管理的时候心情也舒畅,本文给大家推荐 25 个制作精美的后台管理界面的模板和布局,你值得拥有。

Free Admin Template

 

Web App Theme

 


阅读全文...
分类: Progamming - Web Tech - CSS/HTML  评论: 4  浏览: 196

load data infile 导入数据 InnoDB 外键约束

用户表:user
主键:id

内容表:post
主键:id
外键:user_id(关联到 user 表的主键 id)

post 表的数据文件存在文本文件中,字段之间用 tab 分隔,当要把文件导入到 post 表时,因 user 和 post 都是 InnoDB 引擎的,有外键约束,运行导入语句:

load data infile '/home/leakon/post.sql' ignore into table post ignore 1 lines ( user_id, title, unixtime );

MySQL 报错,信息如下:

Cannot add or update a child row: a foreign key constraint fails (`leakon/post`, CONSTRAINT `post_FK_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`))

反复尝试,总是失败,后来查了一下解决办法,只要在装载数据之前,插入下述语句,即可暂时关闭外键约束检查:

SET FOREIGN_KEY_CHECKS = 0;

然后再次运行 load data infile 语句,即可立即导入数据。



阅读全文...
分类: Database - MySQL  评论: 0  浏览: 21

2012-02-12 Sun. Sunny - 年后思绪

来北京一年了,是的,刚好一年,这一年我像我当初来到这里承诺的那样,好好工作一年,其他什么都不想。这一年中发生了太多的事情,刚来北京的将近半年,除了工作之外自己也会做做其他喜欢的东西,当然结果都是自娱自乐罢了。

一年后的现在,感觉思绪有点混乱了,或者说,脑子里产生了一些疑问。现在的工作蛮好,虽然是家小公司,但是工作也比较有激情,而且工作的事情也比较喜欢,可是唯一的缺点是,公司再项目开发中没有好的经验,当然我只是在项目开发工作中对这些工作步骤产生了疑惑:应不应该这样做?这样做对不对?有没有更好的方式?或者其他开发方式?这种疑问是一点一滴积累起来的,当然我自己也找不到问题的答案,就如同事说的那样,我们也都是在“摸索”,“摸索”一套适合我们公司自己的开发经验。对于这样的回答,没有解除我的疑虑,而更加肯定了我的怀疑。当然,除了这些疑虑者外,公司的其他方面都挺好,我很喜欢。最近也偶尔会去看看招聘,看着喜欢的就投了,虽然没投几份。也跟上级坦白说了,我打算离职,希望赶快招新人来接手我的工作。


阅读全文...
分类: Life - Diaries  评论: 1  浏览: 78

28 个必备的 Linux 命令行工具

dstat & sar

iostat, vmstat, ifstat and much more in one.

dstat screenshot
 

slurm

网络流量图形化工具

slurm screenshot
 

vim & emacs

这个没人不知道吧~

vim screenshot
 


阅读全文...
分类: Server - Linux  评论: 0  浏览: 263

XP系统远程桌面连接使用administrator账号空密码登录

1、首先必须打开远程计算机的远程桌面功能。
    我的电脑-属性-远程-允许用户远程连接到此计算机
 
2、修改windows的安全策略,允许远程桌面连接使用空密码
    在远程计算机上启动“组策略编辑器”(开始-运行-GPEDIT.MSC),在“WINDOWS设置-安全设置-本地策略-安全选项”中找到“使用空白密 码的本地帐户只允许进行控制台登录”,将其设置为“已停用”。这样就可以使用administrator账号、空密码进行远程桌面连接了。


阅读全文...
分类: Server - Windows  评论: 0  浏览: 41

LINUX远程桌面设置(tsclient,rdesktop)

ubuntu 自带了tsclient (应用程序→internet→终端服务客户端)。使用它可以很方便的连接到windows系统.

但是他的缺点是很明显的,分辨率不能自定义。默认的分辨率,使得远程窗口太小;全屏来回切换又太麻烦(ctrl+alt+enter),其他的几个分辨率 要么太小,要么会覆盖掉ubuntu的上下工具栏.

所以最好使用rdesktop来指定分辨率,让远程桌面刚好填充到空白区域:

在终端里敲:

rdesktop 远程ip -u 用户名 -p 密码 -a 16 -g 1265x728 -r sound:local -5

其中-g 参数就是指定分辨率。因为我是1280*800 所以我使用1265*728的分辨率是正好的。 你可以根据你的情况来调整分辨率,找到一个最佳值。

其中-a参数指定的是16色。

但这有个缺点,就是每次都要敲一堆参数,太麻烦。所以,我们可以使用别名来简化这个命令。

打开~/.bashrc 这个文件。在里面可以添加别名(写在最后面就可以了):

例如我的:

#rdesktop
alias rdp='rdesktop -a 16 -g 1265x728 -r sound:local -5 '

关闭终端。重新打开终端,此时只要敲 rdp ip地址 -u 用户名 -p 密码 就可以了。

而且你还可以把你常用的远程连接写成别名:
alias rdp1='rdesktop 192.168.3.203 -u administrator -p 123456 -a 16 -g 1265x728 -r sound:local -5 '

这样只要敲rdp1就可以打开了。

over。



阅读全文...
分类: Server - Linux  评论: 0  浏览: 42

Enterprise Architect 中文经典教程

一、Enterprise Architect简介
Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发 及部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项目管理,文档生成,数据建模等方面。可以让系统开发中各个角色都获得最好的开发效 率。
二、创建新项目
安装好了EA汉化版后,启动软件。点击“创建新的项目”,打开创建新项目对话框。
 


【图1】
这里可以选择各种的初始的模板包。
 



阅读全文...
分类: Progamming - Related  评论: 0  浏览: 71