🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.database
1 messages
1 total messages Started by Galaxy��VOLUNTEERS��Database Thu, 17 Dec 2009 11:28
Re: NoSQL��ݿ�̽��֮һ �� ΪʲôҪ�÷ǹ�ϵ��ݿ⣿
#227
Author: Galaxy��VOLUNTEERS��Database
Date: Thu, 17 Dec 2009 11:28
234 lines
23120 bytes
������ƪ(��һƪ�跭ǽ)
http://horicky.blogspot.com/2009/11/nosql-patterns.html 

http://www.slideshare.net/guestdfd1ec/design-patterns-for-distributed-nonrela
tional-databases

�� �� Dem (Galaxy��VOLUNTEERS��Database) �Ĵ������ᵽ: ��
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



--
Welcome to Database Board
��ӭ������ݿ��
http://bbs.sjtu.edu.cn/bbsdoc?board=database

�� ��Դ:����ˮ˼Դ bbs.sjtu.edu.cn��[FROM: 219.142.46.135]
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads