Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
·Ö²¼Ê½Êý¾Ý¿â¼¯Èº½éÉÜ
 
×÷Õߣº Ö޼ʸç
  2854  次浏览      33
2020-1-3
 
±à¼­ÍƼö:
ÎÄÕ½²½âʲôʲô³¡¾°ÊʺÏÓ÷ֲ¼Ê½¼Ü¹¹£¬·Ö²¼Ê½Êý¾Ý¿âÌØµã£¬·Ö²¼Ê½Êý¾Ý¿â¡ª¡ªshard£¬·Ö²¼Ê½×î´óµÄÎÊÌ⡪¡ª·Ö²¼Ê½ÊÂÎñ£¬Ï£Íû¶ÔÄúÓÐËù°ïÖú,
±¾ÎÄÀ´×Ô²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼­¡¢ÍƼö¡£

×ԴӹȸèÌá³ö·Ö²¼Ê½Õâ¸ö¸ÅÄî,Õâ¸öÍæÒâÌ«»ðÁË,µ«ÊDz¢²»ÊÇËùÓеÄÒµÎñ³¡¾°¶¼ÊʺÏÓ÷ֲ¼Ê½µÄ

ʲô³¡¾°ÊʺÏÓ÷ֲ¼Ê½¼Ü¹¹£¿

ÍøÒ×·Ö²¼Ê½ÓõÄ×îºÃµÄÁ½¸öÏîÄ¿£ºÍøÒ׿¼À­ && ÍøÒ×ÔÆÒôÀÖ(¸èµ¥¿âµ¥±í°ÙÒÚÒÔÉϼǼ¡¢ÆÀÂÛ¿â)

¿ìµÝÐÐÒµ

΢Ðźì°ü

ÆäËûÒµÎñ¶¼ÊÇÓÐʱ¼äά¶ÈµÄ,¿ÉÄÜÖ»ÐèÒª´æ3¸öÔµÄÔÚÏßÊý¾Ý,ËãÏÂÀ´Ò²¾Í2kw,ÄÇΪʲô»¹Òª×ö·Ö²¼Ê½¼Ü¹¹ÄØ£¿

ËùÒÔ²»ÒªÃÔÐÅ·Ö²¼Ê½¼Ü¹¹ºÍ·Ö¿â·Ö±í

tips£º

µ¥Ì¨·þÎñÆ÷¼¸Ç§qpsû±ØÒª·Ö,Á½ÈýÍòµÄ»°¿ÉÒÔ·Ö

¢ñ¡¢·Ö²¼Ê½Êý¾Ý¿âÌØµã

Óŵã

¿ÉÓÃÐÔÌá¸ß

¿ÉÀ©Õ¹ÐÔÌáÉý(³¶µ­,MySQLÏÖÔÚ4¸ö½ÚµãÀ©8¸ö½ÚµãÔõô°ì£¿Êý¾Ý¿â²»ÊÇredis,redisÀïÃæÄÚ´æÊý¾Ý¿ÉÒÔ¶ªµô,ÉõÖÁredisµ¥Ï̵߳Ä×öÕâЩ¶¼ºÃŪ,MySQL²¢²»ÊÇ,8À©12µÄ»°,Ô­À´µÄÊý¾Ý¶¼Òª´òÉ¢Ò»±é,Ô­À´8¸ö»úÆ÷,hash8¸ö,ÏÖÔÚ±ä12¸ö,Êý¾ÝÈ«²¿´òÉ¢,Èç¹û8*500G,4TÊý¾Ý´òÉ¢µ½12¸ö½Úµã,Ôõô´òÉ¢,Õâô¶à±í)£¬MySQL¿ÉÀ©Õ¹ÐÔµÄÌáÉýÊǺÜÄÑ´ïµ½µÄ,ÎÒÃǽèÖúÁíÍâһЩÊÖ¶ÎÀ´×öÀ©Õ¹ÐÔ£¬ÎªÊ²Ã´mongodb,redis,tidbÀ©Õ¹ÐÔÊǺõÄ,ÒòΪËûÃÇµÄ·ÖÆ¬²ßÂÔ¸üºÃ(Ò²ÓÐȱµã),ÊÇδÀ´±È½ÏºÃµÄģʽ,µ«ÊÇÔÚ¹ØÏµÐÍÊý¾Ý¿âÖкÜÄÑʵÏÖ,¶ÔMySQLÄں˺ÍÖмä¼þµÄ¸ÄÔìÌ«´óÁË Ä³Ð©Çé¿öÏÂÍÌÍÂÂÊÌáÉýÏÔÖø ---´ó´óµÄÎʺÅ,Ö»ÓÐijЩ³¡¾°²Å»áÏÔÖøÌáÉý£¬ Ô­À´Ò»Ì¨»úÆ÷,²ð³É°Ę̈»úÆ÷,ÄǾÍÐÔÄÜÌáÉý°Ë±¶£¿ÕâÊDz»´æÔÚµÄ

ȱµã

ÒÀÀµÖмä¼þ(²»ÒÀÀµÖмä¼þ¾ÍÒªÔÚÒµÎñ²ã×ö),Òµ½ç»ù±¾ÉÏÕÒ²»µ½Ò»¸öºÃµÄÖмä¼þ,mycat¿ÉÒÔÓÃ,µ«ÊÇÉú²úÉϲ»½¨Òé SQLÓï¾äÖ§³Ö²»×ã(Öмä¼þÖ§³ÖµÄsql·Ç³£ÓÐÏÞ,¶à±íjoin,×Ó²éѯ,ÅÉÉú±íÕâЩ¹À¼ÆÍ治ת,mongodb,redis,tidb²»×öÕâЩ)

ÔËά¸´ÔÓ¶ÈÌá¸ß

ijЩÇé¿öÏÂÐÔÄÜϽµ¾Þ´ó

¢ò¡¢·Ö²¼Ê½Êý¾Ý¿â¡ª¡ªshard

2.1 shardÏà¹Ø¸ÅÄî

A database shard is a horizontal partition(ˮƽ·ÖÇø) of data in a database. Each individual partition is referred to as a shard or database shard. Each shard is held on a separete database server instance,to spread load.

shardingºÍ·ÖÇøµÄÒìͬ

Ïàͬ£º´òÉ¢Êý¾Ý

²»Í¬£º´òÉ¢µÄÊý¾Ý¿ÉÄܲ»ÔÚͬһʵÀýÉÏ

×ܽ᣺shardingµÄʵÏַdz£¸´ÔÓ

¾Ù¸öÀõ×Ó

orders±í,¸ù¾ÝÈÕÆÚ×ö·ÖÇø,ÿ¸öÔÂÒ»ÕŶ©µ¥±í,»¹ÊÇÔÚһ̨MySQLÉÏ

×ö·ÖƬµÄ»°,°ÑÒ»Õűí,·Öµ½ËĄ̈MySQLÉÏÈ¥

ÔÚ·ÖÇøÖУº

partition by hash(id)

Õâ¸öid½Ð×ö·ÖÇø¼ü

ÔÚshardÖУº°ÑÕâ¸ö·ÖÇø¼ü½Ð×÷¾ùºâ×Ö¶Î

°Ñid ×÷hash,%4 À´·Öµ½Ëĸö»úÆ÷ÉÏ,°Ñdate ×÷rangeÒ²¿ÉÒÔ

Èç¹û¸ù¾Ýorder_key·ÖÁËËĸö»úÆ÷

select * from orders where order_key = ?

ÕâÑùÐÔÄܾÍÌáÉýÁË

ÔõôÕÒµ½Õâ¸ö»úÆ÷ÄØ£º

·¨1£ºÒµÎñ²ã¿ØÖÆ,¸ù¾Ý·ÖÇø¹æÔò¸ã,Èç¹ûorder_keyÊÇintÀàÐÍ,ÄǾÍ%4,¸ù¾Ý½á¹ûÏ·¢µ½¶ÔÓ¦µÄDatanode(ip)

·¨2£ºÖмä¼þ,client²»ÓùØÐĺó¶ËµÄ·Ö¿â¹æÔò,¾ùºâ×Ö¶ÎÕâЩ,clientÖ±½Óͨ¹ýMySQLЭÒé·ÃÎÊÖмä¼þ,Öмä¼þ×Ô¶¯°ïÄã¼ÆËã¸Ã·ÃÎÊÄĸö½Úµã,sqlµÄ¸ÄдÓÉÖмä¼þÀ´×ö,ÏñÎÒÃÇÉÏÃæÕâ¸ösql¾Í²»ÓøÄд,ֻҪתһÏÂip¾ÍÐÐ Á½¸öÎÊÌ⣺

Á½ÖÖ·½·¨£ºÄĸöÐÔÄܸüºÃ,Ϊʲô£¿

·¨1¸üºÃ,Ö±½ÓÁ¬Êý¾Ý¿â,·¨2¶àÁËÒ»²ã,Öмä¼þµÄÓÅÊÆÔÚÓÚ,¿ª·¢ÈËÔ±¸ü·½±ãд´úÂë,¾ÍºÍÖ±½ÓÁ¬Êý¾Ý¿âÒ»ÑùÓÃ,ÆäËûÊÂÇé¶¼½»¸øÖмä¼þ

ÒµÎñÀïÃæÓÀÔ¶¶¼ÊÇÖ»ÓÐÕâôһ¸ö¼òµ¥µÄÐèÇóÂÈç¹û¸ù¾ÝÆäËû×ֶβéÑ¯ÄØ£¿»áÓÐÉÏÃæÎÊÌâÄØ£¿

ÄǾÍËùÓÐµÄ·ÖÆ¬¶¼ÒªÕÒÒ»±é,Äã¼ÓN¶à¸ö½Úµã,ÕâÑù»¹½Ð¿ÉÀ©Õ¹Â𣿽ڵãÔ½¶à,ÐÔÄÜÔ½²îÁ˶¼,ºÍ·ÖÇø±íµÄÊÇÒ»ÑùµÄµÀÀí,orders_partition±íÖпÉÒÔexplain¿´ÏÂÁ½ÖÖÇé¿ö,×ßË÷ÒýµÄ»°,1ÒÚµÄÊý¾ÝÁ¿ÏÂ,ºÍ1kwÊý¾ÝÁ¿ÏÂËÙ¶ÈÊÇÒ»ÑùµÄ,Äã·ÖÊ®¸öƬûʲôÒâÒå

2.2 ×öshardµÄÈý¸öÔ­Ôò

¾¡¿ÉÄܴ󲿷ֵÄÒµÎñÂß¼­¶¼ÊǸù¾Ý¾ùºâ×Ö¶Î,ÖÁÉٰٷÖÖ®80%,¸ü¸Ä·Ö²¼Ê½Êý¾Ý¿âÖеľùºâ×ֶηdz£Âé·³,±ØÐëÒ»¿ªÊ¼¾Í¹æ»®ºÅ±íµÄ¾ùºâ×Ö¶Î

Èç¹û²»ÄÜÑ¡ÔñÓÐЧµÄ¾ùºâ×Ö¶Î,ÕâÕűí¾Í²»Òª½øÐÐShard,×÷Ϊȫ¾Ö±í

Èç¹ûÒµÎñÑ¡Ôñ²»³öÓÐЧÂʵľùºâ×Ö¶Î,ÄÇô½øÐзֲ¼Ê½Êý¾Ý¿âµÄ¸ÄÔìÒ²½«ÊÇͽÀ͵Ä

tips£ºshardÒ»°ãÓÃhash´òÉ¢,ƽ¾ùµÄ,Èç¹ûûÓдòÉ¢¾ÍÊǾùºâ×Ö¶ÎûѡºÃ,¿ÉÒÔÑ¡ÔñÓöà¸ö×Ö¶Î×÷¾ùºâ×Ö¶Î

2.3 ¿´¿´±ðÈ˵ÄÒµÎñÔõôѡÔñ¾ùºâ×ֶεÄ

ÄãÆ½Ê±Ôõô¹äÌÔ±¦µÄ£¿

µã¿ªÌÔ±¦,ËùÓеIJéѯ¶¼ÊÇÂò¼Ò²éѯ,ÄãÄܲéÄãÀÏÆÅÂòÁËÄÄЩ¶«Î÷Âð£¿ËùÓеIJéѯ¶¼ÊǸù¾Ý×Ô¼ºµÄidÀ´²é(µÇ½ÊÇͨ¹ýÓû§ÖÐÐÄÀ´µÇ½µÄ)

ϵ¥ÁË,¶©µ¥ÀïÓÐuserid,¶©µ¥Ã÷ϸÖÐÒ²ÓÐuserid,µÇ½µ½ÌÔ±¦,²é×î½üһЩ¶©µ¥ÐÅÏ¢,¹ºÂò¼Ç¼,Ò²ÊǸù¾ÝuseridÀ´²éµÄ

ËùÒÔµçÉ̵ıí½á¹¹Éè¼Æ,ÓÐÕÅuser±í,ÓÃÀ´´æÓû§ÐÅÏ¢µÄ,ÀïÃæÓиöuserid

ÓÖÓÐÒ»¸öorders±í,¶©µ¥±íÀïÃæÒ²Óиöuserid

»¹Óиöorderline±í,Ò»¸ö¶©µ¥ÀïÏÂÁ˶àÉÙ¸öÉÌÆ·,ÀïÃæÒ²Óиöuserid

¿ÉÄÜ»¹Óиöfavorite±í,ÀïÃæÒ²ÓÐÒ»¸öuserid

coupon±í,»¹ÊÇÓиöuserid

×ÛÉÏ,ËùÓÐÂò¼ÒµÄÊý¾Ý¶¼ÓÐÒ»¸öuseridµÄ×Ö¶Î,Õâʱºò ÉÏÃæÕâЩ±í¾Í¿ÉÒÔ¸ù¾Ýuserid·Åµ½²»Í¬µÄshardÖÐ

ÕâÒâζ×ÅÊ²Ã´ÄØ£¿Ò»¸öÓû§µÄËùÓÐÐÅÏ¢ÊÇÔÚÒ»¸ö·ÖƬÉϵÄ,ÊDz»»á¿ç·ÖƬµÄ,²»´æÔÚÒ»¸ö²éѯҪ²éºÜ¶à¸ö·ÖƬµÄ

ËùÒÔÌÔ±¦µÄÒµÎñÊǷdz£ÈÝÒ××öÀ©Õ¹µÄ,Ö»Òª¼Ó»úÆ÷,°ÑÊý¾Ý´òÉ¢,¾ÍÊÇ¿ÉÀ©Õ¹µÄ

ËùÒÔ¶ÔÓÚµçÉ̵ÄÒµÎñÀ´Ëµ,Óиö·Ç³£ºÃµÄά¶È½ÐÂò¼Òά¶È,ËùÓеIJéѯ»ù±¾É϶¼ÊǸù¾ÝÂò¼Òid

ÄÇÍøÒ×ÔÆÒôÀֵĸ赥ÓÖÊÇÔõôŪµÄÄØ£¿

Ò²ÊÇuserid°¡,¹þ¹þ,¿´×Ô¼ºµÄ¸èµ¥,¿´±ðÈ˵ĸ赥,¶¼ÊÇÓõÄuserid

¿ìµÝÐÐÒµÓõÄÊÇʲô£¿

Ô˵¥ºÅ

΢Ðźì°üµÄ¾ùºâ×Ö¶ÎÊÇʲô£¿

Ò²ÊÇuserid,Ŷàë

ÉÏÃæËùÓеĶ¼ÒªÓÃÖмä¼þ,Ò»°ãÓÃmycat

¢ó¡¢·Ö²¼Ê½×î´óµÄÎÊÌ⡪¡ª·Ö²¼Ê½ÊÂÎñ

3.1 ΢Ðźì°ü°¸Àý

user<--->user<--->user
Öмä¼þ
client

Èç¹ûһ̨»úÆ÷

begin;
update user set money
= money - 100 where userid = xxx;
update user set money
= money + 100 where userid = xxx;
commit;

ÄÇ×ß·Ö²¼Ê½ÊÂÎñµÄ»°,ºÜÓпÉÄÜÕâÁ½¸öuserid²»ÔÚͬһ¸ö·ÖƬÀïÃæ

Õâ¸öÊÂÎñ¾Í±ä³ÉÁË·Ö²¼Ê½ÊÂÎñ,Ê×ÏÈ,mycat²»Ö§³Ö·Ö²¼Ê½ÊÂÎñ,µ«ÊÇÕâôдÊÇÖ§³ÖµÄ

Òâζ×Å×Ų»ÊÇÒ»¸öÔ­×Ó²Ù×÷,±ä³ÉÁËÁ½¸öÊÂÎñ·Öµ½Á½¸ö·ÖƬÉÏÈ¥,×ö²»µ½Ô­×ÓÐÔ,ËùÒÔǧÍò²»Òª°ÑmycatÓÃÔڹؼüµÄÒµÎñ,ÌØ±ðÊǸúÇ®´ò½»µÀµÄ

ÏÖÔÚÒµ½çµÄÖмä¼þ,³ýÁËÌÔ±¦ºÍÍøÒ×Ã²ËÆ»¹Ã»ÓÐʲôÖмä¼þÖ§³Ö·Ö²¼Ê½ÊÂÎñµÄ,ÄÇÔõô°ìÄØ£¿

·Ö²¼Ê½ÊÂÎñ¸ÄΪµ¥¸öÊÂÎñ,֮ǰÌá¹ýµÄ²¹³¥»úÖÆ,×öÒ»¸ömessage±í,updateµÄʱºòÍùmessage±íÖвåÈëÏûÏ¢,ÁíÒ»Õűí,²é¿´ÏûÏ¢,È»ºóupdate,×îºó°ÑÏûÏ¢ÖÃΪÒѽÓÊÕ

Õâʱºò»¹ÐèÒªÖмä¼þÂð£¿no£¡ÕâÒ²½ÐÒ»ÖÖÈáÐÔÊÂÎñ

3.2 Óû§Ïµ¥°¸Àý

orders±í,Èý¸ö·ÖƬ,userid×÷¾ùºâ×Ö¶Î,»¹Óиö±í,½Ðstock(¿â´æ)

ϵ¥µÄÂß¼­¾Í±äµÃ²»Ò»ÑùÁË,¿´tpccÑùÀý

begin;
ÏÈËø¶¨¿â´æ
insert into orders
insert into orderline
update stock set count
= count - 1 where itemid = £¿
update
...
xxx
...
commit;

orders±í·Ö¿â·Ö±íÁË,stock±íûÓÐuseridÕâ¶«Î÷,ËùÒÔstock±í½ÐÈ«¾Ö±í,ÎÒÃǸÃÔõô·Å,¿ÉÒԷŵ½µ¥¶ÀµÄʵÀýÉÏ,Ò²¿ÉÒԷŵ½ÆäÖеÄÒ»¸ö·ÖƬÉÏ,ÉõÖÁ¿ÉÒÔ¸ù¾ÝskuidÈ¥×öshard

ÿ¸öMySQLÊÇÓÃÀ´´æ·ÖƬµÄ,µ«²¢²»ÒªÇóÒ»¸ö·Ö²¼Ê½¼¯ÈºÖÐËùÓеıí¾ùºâ×Ö¶ÎÊÇÒ»ÑùµÄ,ÒµÎñÖ»ÒªÖªµÀÔõô´æµÄ¾ÍÐÐ,¾ùºâ×Ö¶ÎÊÇʲô,Ôõô·ÃÎÊ,×Ô¼ºÖªµÀ¾ÍÐÐ,¶ÔÓÚÖмä¼þÀ´ËµÓиöÔªÊý¾Ý¿âÀ´´æÕâЩ¾ùºâ×Ö¶Î

ÕâʱºòÕâ¸öÁ÷³Ì¾ÍÊÇ·Ö²¼Ê½µÄÁË,ÌÔ±¦ÍøÒ×µÄÖмä¼þ¿ÉÒÔÖ§³ÖÕâ¸ö,Èç¹ûstock×öÁË·ÖÆ¬¾ÍÌÖÑáÁË,Ò»¸ö¶©µ¥¿ÉÒÔÓкܶà¼þÉÌÆ·,ºÜ¶à¸ö¿â´æÒªÐÞ¸Ä,Éæ¼°µÄ½Úµã¿ÉÄܾͶàÁË,²»ÏñתÕËÁË,ËùÒÔ¶©µ¥±í·Åµ½ÏûÏ¢¶ÓÁÐ(mq)ÖÐ×öÁË

Ҫϵ¥µÄ»°,Ïȷŵ½mqÖÐ,ºóÃæºÜ¶àworkerÏß³Ì,Äõ½Õâ¸öÏûϢȻºóÈ¥Ïû·Ñ

ËùÒÔ,ÏÖÔÚ´ò¿ª¾©¶«,ÌìèÕâЩ,ÏÂÒ»¸öµ¥Ö®ºó,״̬ÏÔʾΪ³ö¿âÖÐ,ʲô½Ð³ö¿âÖУ¿

³ö¿âÖоͱíʾ,ÎÒÏÖÔÚÕâ¸öϵ¥,Ö»ÊǰÑÒµÎñÂß¼­¶ªµ½ÏûÏ¢¶ÓÁÐÖÐ,ÖÁÓÚÏûÏ¢¶ÓÁкóÃæÄܲ»Äܳɹ¦²¢²»ÖªµÀ,Èç¹û¿â´æ²»¹»»á¸æËßÄã³ö¿âʧ°Ü,È»ºó°ÑÄãÕâ¸öϵ¥¹ý³Ì»Ø¹öµô

ËùÒÔ¾­³£Ïµ¥³É¹¦,³ö¿âʧ°Ü,²»ÊÇ1111,Ò»°ã¶¼²»»áÓÐÎÊÌâ,1111µÄʱºò¾Í²»Ò»¶¨ÁË,ʵʱ¿â´æ´ú¼ÛÌ«´óÁË

3.3 С½á

µ½ÏÖÔÚΪֹ,»¹ÓõÃ×ÅÖмä¼þÂ²»ÊÇ¿ÉÒÔ²»ÓÃ,¶øÊǽ¨Òé²»ÓÃ,ÒòΪÓÃÁËÖмä¼þ,Äã±ÜÃâ²»ÁË·Ö²¼Ê½ÊÂÎñ,ºÜ¶àºËÐÄÒµÎñÓзçÏÕµÄ

¸ù¾ÝuseridÀ´À©Õ¹,×ö²éѯûÎÊÌâ°¡,µ«ÊǶÔÓÚÊý¾Ý¿âÀ´Ëµ,·Ö¿â·Ö±í×îÄѵĵãÔÚÓÚÊÂÎñ»¯ºÍ³Ö¾Ã»¯,¶ø²»ÊÇselect,ÉõÖÁselect·Åµ½redisÀï¶¼¿ÉÒÔ

·Ö²¼Ê½ÊÂÎñµ½×îºó¶¼ÓÃÁËÏûÏ¢±íºÍÏûÏ¢¶ÓÁÐ,ÒµÎñÂß¼­¶¼¶ªµ½ÏûÏ¢Àï,ºóÃæÏû·ÑÏß³ÌÂýÂýÏû·Ñ,³ö´íÁË,¾Í»Ø¹ö,¹Ø±Õ¶©µ¥,¶©µ¥±íÖÐÓиö״̬×Ö¶Î,¿É¼û,²»¿É¼û,³É¹¦,û³É¹¦,¶¼ÊÇͨ¹ýÒµÎñÀ´¿ØÖƵÄ

΢Ðźì°üÓõľͲ»ÊÇÖмä¼þ,ÌÔ±¦µÄϵ¥¹ý³ÌҲûÓÐÓÃÖмä¼þ×ö,´æÔÚ·Ö²¼Ê½ÊÂÎñ,ÐÔÄܲ»ºÃ

Ó÷ֲ¼Ê½ÊÂÎñµÄЭµ÷Æ÷À´×öµÄ,ÌÔ±¦×îÔçÌá³ötcc,ÏÖÔÚ»ùÓÚÕâ¸ö·â×°ÁËÒ»¶Ñ¶«Î÷Á˶¼

ËùÒÔÖмä¼þÕâ¶«Î÷ºÜΣÏÕ²»ÒªÏëµÄÌ«¶àÁË,Èç¹ûÓÃÁËÖмä¼þ,ÄÇÒ²ÊǸöºÜ¼òµ¥µÄ¶«Î÷,ÌÔ±¦,΢ÐźËÐÄÒµÎñ¶¼²»ÓÃÖмä¼þ,ËùÓеķÃÎʶ¼ÊÇÒµÎñ¿ØÖƵġ£

½¨Ò飺

Èç¹û·Ö¿â·Ö±í,×îºÃÈÃÒµÎñ¿ØÖÆ,¶ø²»ÒªÓÃÖмä¼þ,ÓÃÁËÖмä¼þÕâ¸ö»î¶ù¾ÍÊÇÄãµÄ,˵ÄÑÌýµã,¾ÍÊÇ˦¹ø,ÒÔºó³öÁËÎÊÌâ¾Í¸úÎÒû¹ØÏµ,µÚ¶þµã,ºËÐÄÒµÎñ,Öмä¼þ²»Ö§³Ö·Ö²¼Ê½ÊÂÎñ,±£Ö¤²»ÁËÊÂÎñÐԺͳ־ÃÐÔ,µÚÈýµã,Öмä¼þÐÔÄÜÕæµÄ²»ÐÐ,¼´Ê¹ÓÃÁËddb,Ò»¸ö¶©µ¥Èý¸öÉÌÆ·¿åÁ˺öà¸ö½Úµã,˫ʮһÄܽÓÊÜÂ𣿲»ÒªÃÔÐÅÖмä¼þ

µ«ÊÇ,¿ìµÝÐÐÒµÕæµÄºÜÊʺÏÖмä¼þ,ÒòΪ¿ìµÝÐÐҵûÓкÜÇ¿µÄÊÂÎñÐÔÒªÇó,¾ÍÊÇÒ»¸ö¸öÔ˵¥,Õâ¸öÔ˵¥ÒªÖÜת¼¸´Î,ÏÖÔÚµÄÖÐת״̬,ËùÒÔ¿ìµÝÐÐÒµÊÇÖмä¼þʹÓõÄ×îºÃµÄ³¡¾°,Èç¹û»¥ÁªÍø½ðÈÚÓÃÁËÖмä¼þ,Åöµ½ÁË·Ö²¼Ê½ÊÂÎñ¾ÍºÜÒ²ÈÝÒ׺ǺÇ

¢ô¡¢Àí½â·Ö¿âºÍ·Ö±íÄØ

shardÊÇÒ»¸ö±ê×¼µÄ˵·¨,µ«ÊÇ·Ö¿â·Ö±í¸ù±¾Ã»ÓÐÍêÕûµÄ¶¨Òå,ºÜÄ£ºý

×îÔçµÄʱºò£º

·Ö±í£ºorders ---> orders00,orders01,,,,

·Ö¿â£ºdb1,db2Öж¼ÓÐorders00,orders01,µ±È»Ò²¿ÉÒÔ·Öµ½ÆäËûʵÀýÖеÄdbÖÐ

ÕâÑù±íÃû¸ÄÁË,²»ºÃά»¤,ÍøÒ×µÄÖмä¼þ¾Í²»Ö§³Ö·Ö±í,ÄǾÍÖ»·Ö¿â°É,×îºÃÊÇͬһ¸öʵÀýÉϽ¨ºÜ¶à¸ö²»Í¬µÄdb,À©Õ¹ÆðÀ´²»ÓôòÉ¢Êý¾Ý

ËùÒÔÕâÀïÓÖÓиöÌÔ±¦µÄ¹æ·¶,Ò»¿ªÊ¼¿ÉÄܾͻá·Ö1024¸öshard,²»¹Ü¶àÉÙ¸ö»úÆ÷,Ò»¿ªÊ¼·ÅÔÚ100¸ö»úÆ÷ÉÏ,˫ʮһ·Åµ½1000¸ö»úÆ÷ÉÏ,¾ßÌåÂäµ½Äĸöshard»¹ÊÇÓÃhash

²»ÄÜ2048¸öshard,MySQLÊý¾Ý¿âÀ©Õ¹ÊDz»×öreshardµÄ,ÖØ·Ö²¼µÄ´ú¼ÛÌ«´ó,ËùÒԾͲð,ÔÚÒ»¿ªÊ¼ÔÚͬһ¸ö»úÆ÷ÉÏ×öºÜ¶à¸öshard

Ò»¿ªÊ¼¾Í°Ñshard¾Í»®ºÃ,À©Õ¹µÄʱºò²»ÓÃÿ´Î¶¼È¥´òÉ¢Êý¾Ý,»»¾ä»°Ëµ,ÕâÑù×öµÄÊÇ´¹Ö±À©Õ¹,ËäȻ˵·Ö²¼Ê½Êý¾Ý¿â¿ÉÀ©Õ¹,µ«ÊÇÒòΪhashµÄÀ©Õ¹ºÜÂé·³,Éæ¼°µ½Êý¾ÝµÄÖØ·Ö²¼,ËùÒÔ¾¡Á¿´¹Ö±À©Õ¹,Êý¾Ý´òɢˮƽ´òÉ¢,À©Õ¹µÄ»°´¹Ö±À©Õ¹

mongodbµÄÀ©Õ¹·½±ã,ÊÇ»ùÓÚchunckµÄ,ÏȰÑËùÓеÄÊý¾Ý·Åµ½chunckÀï,Èç¹û³¬¹ý32M»á×ösplit,²ð³ÉÁ½¸öchunck,È»ºó×öÒ»¸öbalanceµÄ²Ù×÷,°ÑÁ½¸öchunck·Åµ½Á½Ì¨·þÎñÆ÷ÉÏ,ËùÒÔÕâ¸öchunckÊÇ¿ÉÒÔÒÆ¶¯µÄ,mysqlµÄhash²»¿ÉÒÆ¶¯

mongodbµÄbalanceÒ²ÓÐÎÊÌâ,Ç£Éæµ½Ò»Ì¨·þÎñÆ÷µÄchunck¿½±´µ½Áíһ̨·þÎñÆ÷

¸÷ÓÐÓÅȱµã,À©Õ¹·½±ã,мÓһ̨»úÆ÷,¿ÉÒ԰Ѹ÷¸ö»úÆ÷ÉϵÄchunckÒÆ¹ýÀ´,²»ÓÃhashÄÇÑùÕû¸ö¼¯ÈºµÄÖØ·Ö²¼,Ö»ÄÃÒ»²¿·Öchunck¹ýÀ´,µ«ÊÇio»áºÜ´ó

   
2854 ´Îä¯ÀÀ       33
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ