🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.database
Article #226

NoSQL��ݿ�̽��֮һ �� ΪʲôҪ�÷ǹ�ϵ��ݿ⣿

#226
From: Galaxy��VOLUNTEERS��Database
Date: Thu, 17 Dec 2009 11:22
220 lines
22720 bytes
http://robbin.javaeye.com/blog/524977

���Ż�����web2.0��վ�����𣬷ǹ�ϵ�͵���ݿ����ڳ���һ���������ŵ������򣬷�
��ϵ��ݿ��Ʒ�ķ�չ�dz�Ѹ�١���ͳ�Ĺ�ϵ��ݿ���Ӧ��web2.0��վ���ر��dz���
��ģ�͸߲�����SNS���͵�web2.0����̬��վ�Ѿ��Ե��������ģ���¶�˺ܶ����Կ˷���
���⣬���磺 

1��High performance - ����ݿ�߲�����д������ 
web2.0��վҪ����û����Ի���Ϣ��ʵʱ��ɶ�̬ҳ����ṩ��̬��Ϣ�����Ի�����
��ʹ�ö�̬ҳ�澲̬�������������ݿⲢ�����طdz��ߣ�����Ҫ�ﵽÿ������ζ�д
���󡣹�ϵ��ݿ�Ӧ�������SQL��ѯ����ǿ����ס������Ӧ�������SQLд�������
Ӳ��IO���Ѿ��޷������ˡ���ʵ������ͨ��BBS��վ������Ҳ���ڶԸ߲���д���������
��������JavaEye��վ��ʵʱͳ�������û�״̬����¼�������ӵĵ������ͶƱ�����
���������һ���൱�ձ������ 

2��Huge Storage - �Ժ�����ݵĸ�Ч�ʴ洢�ͷ��ʵ����� 
����Facebook��twitter��Friendfeed�����SNS��վ��ÿ���û����������û���̬��
��FriendfeedΪ��һ���¾ʹﵽ��2.5�����û���̬�����ڹ�ϵ��ݿ���˵����һ��2.
5������¼�ı��������SQL��ѯ��Ч���Ǽ�����������������ܵġ����������web��վ
���û���¼ϵͳ��������Ѷ��ʢ�󣬶��������ڼƵ��ʺţ���ϵ��ݿ�Ҳ����Ӧ���� 

3��High Scalability && High Availability- ����ݿ�ĸ߿���չ�Ժ͸߿����Ե���
�� 
�ڻ���web�ļܹ����У���ݿ������ѽ��к�����չ�ģ���һ��Ӧ��ϵͳ���û����ͷ���
�����վ�����ʱ�������ݿ�ȴû�а취��web server��app server����򵥵�ͨ��
��Ӹ���Ӳ���ͷ���ڵ�����չ���ܺ͸������������ںܶ���Ҫ�ṩ24Сʱ����Ϸ�
�����վ��˵������ݿ�ϵͳ���������չ�Ƿdz�ʹ������飬������Ҫͣ��ά����
���Ǩ�ƣ�Ϊʲô��ݿⲻ��ͨ��ϵ���ӷ������ڵ���ʵ����չ�أ� 

�������ᵽ�ġ���ߡ�������ǰ����ϵ��ݿ����������Կ˷����ϰ��������web2.0��
վ��˵����ϵ��ݿ�ĺܶ���Ҫ����ȴ����������֮�أ����磺 

1����ݿ�����һ�������� 
�ܶ�webʵʱϵͳ����Ҫ���ϸ����ݿ����񣬶Զ�һ���Ե�Ҫ��ܵͣ���Щ���϶�дһ
����Ҫ��Ҳ���ߡ������ݿ�������������ݿ�߸�����һ�����صĸ����� 

2����ݿ��дʵʱ�ԺͶ�ʵʱ������ 
�Թ�ϵ��ݿ���˵������һ�����֮�����̲�ѯ���ǿ϶����Զ�����������ݵģ�����
���ںܶ�webӦ����˵������Ҫ����ô�ߵ�ʵʱ�ԣ��ȷ�˵�ң�JavaEye��robbin����һ
����Ϣ֮�󣬹�������ʮ����֮���ҵĶ����߲ſ���������̬����ȫ���Խ��ܵġ� 

3���Ը��ӵ�SQL��ѯ���ر��Ƕ�������ѯ������ 
�κδ��������webϵͳ�����dz��ɻ������Ĺ�����ѯ���Լ����ӵ���ݷ������͵�
����SQL�����ѯ���ر���SNS���͵���վ���������Լ���Ʒ��ƽǶȣ��ͱ�����������
���IJ����������ֻ�ǵ���������ѯ���Լ�����ļ�������ҳ��ѯ��SQL�Ĺ���
������������ˡ� 

��ˣ���ϵ��ݿ�����ЩԽ��Խ���Ӧ�ó������Եò���ô�����ˣ�Ϊ�˽����������
�ķǹ�ϵ��ݿ�Ӧ�˶������������꣬���ָ���ǹ�ϵ��ݿ⣬�ر��Ǽ�ֵ��ݿ�(Ke
y-Value Store DB)������ӿ����������ۻ����ҡ�ǰ���ù���ովٰ���NoSQL 
Conference����·NoSQL��ݿ�׷����࣬����δ���൫����������ģ������г���10��
��Դ��NoSQLDB�����磺 

Redis��Tokyo Cabinet��Cassandra��Voldemort��MongoDB��Dynomite��HBase��CouchDB
��Hypertable�� Riak��Tin�� Flare�� Lightcloud�� KiokuDB��Scalaris�� Kai�� 
ThruDB��  ...... 

��ЩNoSQL��ݿ⣬�е�����C/C++��д�ģ��е�����Java��д�ģ����е�����Erlang��
д�ģ�ÿ�������Լ��Ķ���֮�����������������ˣ���(robbin)Ҳֻ�ܴ�����ѡһЩ��
������ɫ������������ǰ���IJ�Ʒѧϰ���˽�һ�¡���ЩNoSQL��ݿ���¿��Է�Ϊ����
�����ࣺ 

һ�����㼫�߶�д���������Kye-Value��ݿ⣺Redis��Tokyo Cabinet�� Flare 

������Key-Value��ݿ����Ҫ�ص���Ǿ��м��ߵIJ�����д���ܣ�Redis��Tokyo 
Cabinet�� Flare����3��Key-Value DB������C��д�ģ����ǵ����ܶ��൱��ɫ��������
��ɫ�����ܣ����ǻ����Լ����صĹ��ܣ� 

1��Redis 
Redis��һ�����µ���Ŀ���ոշ�����1.0�汾��Redis��������һ��Key-Value���͵���
����ݿ⣬����memcached�������ݿ�ͳͳ�������ڴ浱�н��в���������ͨ���첽��
������ݿ����flush��Ӳ���Ͻ��б��档��Ϊ�Ǵ��ڴ������Redis�����ܷdz���ɫ��
ÿ����Դ��?��10��ζ�д����������֪������������Key-Value DB�� 

Redis�ij�ɫ֮�������������ܣ�Redis����������֧�ֱ���List�����Set���ϵ����
�ṹ�����һ�֧�ֶ�List���и��ֲ����������List����push��pop��ݣ�ȡList��䣬
����ȵȣ���Set֧�ָ��ּ��ϵIJ����������������ⵥ��value�����������1GB������
memcachedֻ�ܱ���1MB����ݣ����Redis��������ʵ�ֺܶ����õĹ��ܣ��ȷ�˵�����
List����FIFO˫�����?ʵ��һ���������ĸ�������Ϣ���з��������Set����������
�ܵ�tagϵͳ�ȵȡ�����RedisҲ���ԶԴ����Key-Value����expireʱ�䣬���Ҳ���Ա�
����һ�����ܼ�ǿ���memcached���á� 

Redis����Ҫȱ������ݿ������ܵ������ڴ�����ƣ���������������ݵĸ����ܶ�д��
������û��ԭ��Ŀ���չ���ƣ�������scale������չ��������Ҫ�����ͻ�����ʵ�ֲַ�
ʽ��д�����Redis�ʺϵij�����Ҫ�����ڽ�С������ĸ����ܲ����������ϡ�Ŀǰʹ��
Redis����վ��github��Engine Yard�� 

2��Tokyo Cabinet��Tokoy Tyrant 
TC��TT�Ŀ��������ձ���Mikio Hirabayashi����Ҫ�������ձ�����SNS��վmixi.jp��
��TC��չ��ʱ�����磬�����Ѿ���һ���dz��������Ŀ��Ҳ��Kye-Value��ݿ��������
���ȵ㣬���ڱ��㷺��Ӧ���ںܶ�ܶ���վ�ϡ�TC��һ�������ܵĴ洢���棬��TT�ṩ
�˶��̸߲߳���������������Ҳ�dz���ɫ��ÿ����Դ���4-5��ζ�д������ 

TC����֧��Key-Value�洢֮�⣬��֧�ֱ���Hashtable������ͣ���˺���һ���򵥵�
��ݿ�?���һ�֧�ֻ���column��������ѯ����ҳ��ѯ�������ܣ������൱��֧
�ֵ���Ļ��ѯ�����ˣ����Կ��Լ򵥵�����ϵ��ݿ�ĺܶ��������Ҳ��TC�ܵ�
��һ�ӭ����Ҫԭ��֮һ����һ��Ruby����Ŀmiyazakiresistance��TT��hashtable�IJ�
����װ�ɺ�ActiveRecordһ��IJ������������dz�ˬ�� 

TC/TT��mixi��ʵ��Ӧ�õ��У��洢��2000�������ϵ���ݣ�ͬʱ֧�����������������
����һ���þ��������Ŀ��TC�ڱ�֤�˼��ߵIJ�����д���ܵ�ͬʱ�����пɿ�����ݳ�
�û����ƣ�ͬʱ��֧�����ƹ�ϵ��ݿ��ṹ��hashtable�Լ��򵥵���������ҳ������
��������һ���ܰ���NoSQL��ݿ⡣ 

TC����Ҫȱ������������ﵽ���ڼ����Ժ󣬲���д������ܻ�����½���NoSQL: 
If Only It Was That Easy�ᵽ�����Ƿ�����TC�������1.6����2-20KB��ݵ�ʱ��д
�����ܿ�ʼ�����½��������ǵ��������������ʱ��TC���ܿ�ʼ�����½�����TC��
���Լ��ṩ��mixi���������������ǧ�����������ʱ��û��������ô���Ե�д����
��ƿ���� 

�����Tim Yang����һ��Memcached��Redis��Tokyo Tyrant�ļ򵥵��������⣬������
�� 

3��Flare 
TC���ձ���һ��SNS��վmixi�����ģ���Flare���ձ��ڶ���SNS��վgreen.jp�����ģ���
��˼�ɡ�Flare�򵥵�˵���Ǹ�TC�����scale���ܡ����滻����TT���֣��Լ������TC
д�������������Flare����Ҫ�ص����֧��scale������������������֮ǰ�����һ
��node server���������˵Ķ���������ڵ㣬��˿��Զ�̬�����ݿ����ڵ㣬ɾ
��������ڵ㣬Ҳ֧��failover��������ʹ�ó�������Ҫ��TC����scale����ô���Կ�
��flare�� 

flareΨһ��ȱ�������ֻ֧��memcachedЭ�飬��˵���ʹ��flare��ʱ�򣬾Ͳ���ʹ��
TC��table��ݽṹ�ˣ�ֻ��ʹ��TC��key-value��ݽṹ�洢�� 

�������㺣���洢����ͷ��ʵ������ĵ�����ݿ⣺MongoDB��CouchDB 

�����ĵ��ķǹ�ϵ��ݿ���Ҫ��������ⲻ�Ǹ����ܵIJ�����д�����DZ�֤������ݴ�
����ͬʱ���������õIJ�ѯ���ܡ�MongoDB����C++�����ģ���CouchDB����Erlang������
�� 

1��MongoDB 
MongoDB��һ�����ڹ�ϵ��ݿ�ͷǹ�ϵ��ݿ�֮��IJ�Ʒ���Ƿǹ�ϵ��ݿ⵱�й�����
�ḻ�������ϵ��ݿ�ġ���֧�ֵ���ݽṹ�dz���ɢ��������json��bjson��ʽ�����
���Դ洢�Ƚϸ��ӵ�������͡�Mongo�����ص�����֧�ֵIJ�ѯ���Էdz�ǿ�����﷨
�е��������������IJ�ѯ���ԣ���������ʵ�����ƹ�ϵ��ݿⵥ���ѯ�ľ�󲿷ֹ�
�ܣ����һ�֧�ֶ���ݽ������� 

Mongo��Ҫ������Ǻ�����ݵķ���Ч�����⣬��ݹٷ����ĵ�����������ﵽ50GB����
��ʱ��Mongo����ݿ�����ٶ���MySQL��10�����ϡ�Mongo�IJ�����дЧ�ʲ����ر��
ɫ����ݹٷ��ṩ�����ܲ��Ա�������Լÿ����Դ���0.5��1.5�ζ�д���󡣶���Mon
go�IJ�����д���ܣ��ң�robbin��Ҳ�����пյ�ʱ��úò���һ�¡� 

��ΪMongo��Ҫ��֧�ֺ�����ݴ洢�ģ�����Mongo���Դ���һ����ɫ�ķֲ�ʽ�ļ�ϵͳG
ridFS������֧�ֺ�������ݴ洢������Ҳ������Щ������ΪGridFS���ܲ��ѣ���һ�㻹
���д����������������֤�ˡ� 

�������Mongo����֧�ָ��ӵ���ݽṹ�����Ҵ���ǿ�����ݲ�ѯ���ܣ���˷dz��ܵ�
��ӭ���ܶ���Ŀ��������MongoDB�����MySQL��ʵ�ֲ����ر��ӵ�WebӦ�ã��ȷ�˵wh
y we migrated from MySQL to MongoDB����һ����ʵ�Ĵ�MySQLǨ�Ƶ�MongoDB�İ���
���������ʵ��̫������Ǩ�Ƶ���Mongo���棬��ݲ�ѯ���ٶȵõ��˷dz����������
�� 

MongoDBҲ��һ��ruby����ĿMongoMapper����ģ��Merb��DataMapper��д��MongoDB�Ľ�
�ڣ�ʹ�������dz��򵥣�������DataMapperһģһ���ܷdz�ǿ�����á� 

2��CouchDB 
CouchDB������һ���dz����������Ŀ���ƺ����ö�����ˡ�������ȴ��CouchDBû��ʲ
ô��Ȥ����Ҫ����ΪCouchDB�����ṩ�˻���HTTP REST�Ľӿڣ����CouchDB�����Ӳ���
��д������˵���Ƿdz����ģ����������������˶�CouchDB����Ȥ�� 

������߿���չ�ԺͿ����Ե�����ֲ�ʽ�������ݿ⣺Cassandra��Voldemort 

����scale��������ݿ���ʵ��Ҫ������������������������ݿ⻹��̫һ��������
������һ���ֲ�ʽ����ݿ�ϵͳ���ɷֲ��ڲ�ͬ�ڵ��������ݿ⹲ͬ����һ����ݿ�
����ϵͳ�����Ҹ�����ֲַ�ʽ�ܹ����ṩonline�ģ����е��ԵĿ���չ�����������
�Բ�ͣ�����Ӹ����ݽڵ㣬ɾ����ݽڵ�ȵȡ������Cassandra������������һ��
��Դ�汾��Google BigTable�����Ʒ��Cassandra��Voldemort������Java�����ģ� 

1��Cassandra 
Cassandra��Ŀ��Facebook��2008�꿪Դ�����ģ����Facebook�Լ�ʹ��Cassandra����
��һ������Դ�ķ�֧����Դ������Cassandra��Ҫ��Amazon��Dynamite�Ŷ���ά������
��Cassandra����Ϊ��Dynamite2.0�汾��Ŀǰ����Facebook֮�⣬twitter��digg.com��
��ʹ��Cassandra�� 

Cassandra����Ҫ�ص��������һ����ݿ⣬������һ����ݿ�ڵ㹲ͬ���ɵ�һ����
��ʽ������񣬶�Cassandra��һ��д�������ᱻ���Ƶ�����ڵ���ȥ����Cassandra��
��������Ҳ�ᱻ·�ɵ�ij���ڵ�����ȥ��ȡ������һ��CassandraȺ����˵����չ������
�Ƚϼ򵥵����飬ֻ����Ⱥ��������ӽڵ�Ϳ����ˡ��ҿ���������˵Facebook��Cassa
ndraȺ���г���100̨���������ɵ���ݿ�Ⱥ���� 

CassandraҲ֧�ֱȽϷḻ����ݽṹ�͹���ǿ��IJ�ѯ���ԣ���MongoDB�Ƚ����ƣ���
ѯ���ܱ�MongoDB����һЩ��twitter��ƽ̨�ܹ������쵼Evan Weaverд��һƪ���½���
Cassandra��http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with
-cassandra/���зdz���ϸ�Ľ��ܡ� 

Cassandra�Ե����ڵ�����������ڵ�IJ�����д���ܲ����ر�ã�������˵��������Ca
ssandraÿ���Լ����1��ζ�д������Ҳ����һЩ���������������ɵ����ۣ�����
����Cassandra�����ڵ��������û������ģ���ʵ�ķֲ�ʽ��ݿ����ϵͳ��Ȼ��n��
���ڵ㹹�ɵ�ϵͳ���䲢������ȡ�������ϵͳ�Ľڵ�������·��Ч�ʣ�������ǵ�
�ڵ�IJ������������� 

2��Voldemort 
Voldemort�Ǹ���Cassandra���Ƶ�������scale����ķֲ�ʽ��ݿ�ϵͳ��Cassandra
������Facebook���SNS��վ����Voldemort��������Linkedin���SNS��վ��˵����SNS
��վΪ���ǹ�����n���NoSQL��ݿ⣬����Cassandar��Voldemort��Tokyo Cabinet��Fl
are�ȵȡ�Voldemort�����ϲ��Ǻܶ࣬�����û���ر���ϸȥ���У�Voldemort�ٷ����
Voldemort�IJ�����д����Ҳ�ܲ��?ÿ�볬����1.5��ζ�д�� 

��Facebook����Cassandra��Linkedin����Voldemort������Ҳ���Դ��¿����������SNS
��վ���ڷֲ�ʽ��ݿ⣬�ر��Ƕ���ݿ��scale��������������Ƕ�ô���С�ǰ���ң�
robbin���ᵽ��webӦ�õļܹ����У�web���app�������˵�������׺�����չ��Ψ����
�ݿ��ǵ���ģ�����scale������Facebook��Linkedin�ڷǹ�ϵ����ݿ�ķֲ�ʽ����̽
����һ���ܺõķ�����Ҳ��Ϊʲô����Cassandra��ô���ŵ���Ҫԭ�� 

���NoSQL��ݿ��Ǹ����˺��˷ܵ��������Dz������µļ����µIJ�Ʒð�������ı�
�����Ѿ��γɵĹ��еļ���������Լ���robbin����΢�˽���һЩ���͸о��Լ�����
�ij��Խ�ȥ�ˣ�����˵NoSQL��ݿ�����Ҳ�Dz�����ģ��ң�robbin��Ҳֻ��dz����ֹ
���ң�robbin��д��ƪ���¼����Լ�һ��������ĵã�Ҳ����ש����ϣ����������
�����о�������������ۺͽ����� 

���ң�robbin�����˵���Ȥ��˵���ֲ�ʽ��ݿ�ϵͳ��������ʵ���õ��ļ�������˲�
���㻨ʱ�����룬����������������򣨸�����NoSQLDB�ͺ����洢NoSQLDB�������Һ�
����Ȥ�ģ��ر���Redis��TT/TC��MongoDB��3��NoSQL��ݿ⣬����ҽ�������д��ƪ��
�·ֱ���ϸ������3����ݿ⡣  
--
Welcome to Database Board
��ӭ������ݿ��
http://bbs.sjtu.edu.cn/bbsdoc?board=database

�� ��Դ:����ˮ˼Դ bbs.sjtu.edu.cn��[FROM: 219.142.46.135]
Technical Details
Message-ID: <4jQYCH$b0a@bbs.sjtu.edu.cn>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx02.iad01.newshosting.com!newshosting.com!novia!transit3.readnews.com!news-out.readnews.com!news-xxxfer.readnews.com!teleglobe.net!newsgate.cuhk.edu.hk!news.neu.edu.cn!news.shec6.edu.cn!SJTU

Show Full Headers
Complete Article Headers
X-Google-Thread: 4df683fd51,a007aff899a56905,start
X-Google-Attributes: gid4df683fd51,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: Chinese,GB
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx02.iad01.newshosting.com!newshosting.com!novia!transit3.readnews.com!news-out.readnews.com!news-xxxfer.readnews.com!teleglobe.net!newsgate.cuhk.edu.hk!news.neu.edu.cn!news.shec6.edu.cn!SJTU
From: Dem.bbs@bbs.sjtu.edu.cn (Galaxy��VOLUNTEERS��Database)
Newsgroups: cn.bbs.comp.database
Subject: NoSQL��ݿ�̽��֮һ �� ΪʲôҪ�÷ǹ�ϵ��ݿ⣿
Date: 17 Dec 2009 11:22:10 GMT
Organization: ��ˮ˼Դ
Message-ID: <4jQYCH$b0a@bbs.sjtu.edu.cn>
Mime-Version: 1.0
Content-Type: text/plain; charset="gb2312"
Content-Transfer-Encoding: 8bit
X-Filename: database/M.1261048913.A