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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
HBase ORM SimpleHBaseÉè¼Æ
 
×÷Õß ÕÅÐÅÖ®£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-07-14
  3202  次浏览      27
 

ĿǰÆóÒµÈí¼þ¿ª·¢Õ¼¾ÝÖ÷Á÷µÄ¿ª·¢Ä£Ê½ÎªÃæÏò¶ÔÏóģʽ¡£ÎÞÂÛÊǽ¨Á¢ÔÚ¼¯ºÏÂÛÖ®ÉϵĴ«Í³¹ØÏµÐÍÊý¾Ý¿â£¬»¹ÊÇÒÔCAP¶¨Àí/Hadoop/BigTableΪ»ùʯµÄHBase£¬¶¼ÃæÁÙÒÔϵĻù±¾ÎÊÌ⣺

1.ÈçºÎ±£´æ¶ÔÏóµ½Êý¾Ý´æ´¢£¿

2.ÈçºÎ´ÓÊý¾Ý´æ´¢»ñÈ¡¶ÔÏó£¿

3.ÈçºÎ¸üÐÂÊý¾Ý´æ´¢ÖеÄÏÖÓÐÊý¾Ý£¿Êý¾Ý´æ´¢µÄÀàÐÍϵͳºÍ¿ª·¢ÓïÑÔ£¨Java£©µÄÀàÐÍϵͳ֮¼äÈçºÎÏ໥ת»»£¿

¼ò¶øÑÔÖ®£¬Êý¾Ý´æ´¢ÈçºÎÌṩÔö¡¢É¾¡¢¸Ä¡¢²éµÄ·þÎñÄÜÁ¦£¬Ó¦ÓÃÈçºÎ·½±ãµÄʹÓøÃÄÜÁ¦¡£¹ØÏµÐÍÊý¾Ý¿â¸ø³öµÄ´ð°¸ÎªSQL£¬JDBCºÍ¸÷ÖÖORM¿ò¼Ü£¨µäÐÍÀý×ÓΪHibernateºÍMyBatis£©¡£

HBase ORM

ORM¼´Object-Relational mapping£¬¶ÔÓÚHBase¶øÑÔ²»´æÔÚRelational£¬Òò´Ë¸ÃÃû³Æ²»×¼È·£¬Ö»ÊÇORM×öΪһ¸öÊõÓïʹÓÃÌ«¹ý¹ã·º£¬ÕâÀï·ºÖ¸Êý¾Ý´æ´¢ºÍObjectÖ®¼äµÄÓ³Éä¡£

HBaseµÄÉè¼ÆºÍRDBMS²îÒì½Ï´ó£¬Òò´Ë³ýÁËÉÏһС½ÚµÄÎÊÌâÍ⣬»¹ÐèÒª½â¾öÈçÏÂÎÊÌ⣺

1.ÈçºÎÓ³ÉäHTableµÄRowKey£¿

2.ÈçºÎÓ³ÉäHTableµÄbytesµ½JavaÀàÐÍ£¿

3.ÈçºÎÓ³ÉäHTableµÄ¶à°æ±¾ÄÜÁ¦£¿

±¾ÎÄ×ÅÖØ½éÉÜHBase ORM SimpleHBase¿ò¼Ü£¬²¢ºÍÁíÒ»¸öHBase ORM Phoenix£¨http://phoenix.incubator.apache.org/£©×ö±È½Ï¡£

SimpleHBase¼ò½é

SimpleHBase£¨https://github.com/zhang-xzhi/simplehbase£©ÊÇJavaºÍHBaseÖ®¼äµÄÇáÁ¿¼¶Öмä¼þ£¬Ö÷Òª°üº¬ÒÔϹ¦ÄÜ£º

1.Êý¾ÝÀàÐÍÓ³É䣺JavaÀàÐͺÍHBaseµÄbytesÖ®¼äµÄÊý¾Ýת»»¡£

2.¼òµ¥²Ù×÷·â×°£º·â×°ÁËHBaseµÄput,get,scanµÈ²Ù×÷Ϊ¼òµ¥µÄJava²Ù×÷·½Ê½¡£

3.HBase query·â×°£º·â×°ÁËHBaseµÄfilter£¬¿ÉÒÔʹÓÃSQL-likeµÄ·½Ê½²Ù×÷HBase¡£

4.¶¯Ì¬query·â×°£ºÀàËÆÓÚmybatis£¬¿ÉÒÔʹÓÃxmlÅäÖö¯Ì¬Óï¾ä²éѯhbase¡£

5.insert,updateÖ§³Ö: ½¨Á¢ÔÚHBaseµÄcheckAndPutÖ®ÉÏ¡£

6.HBase¶à°æ±¾Ö§³Ö£ºÌṩ½Ó¿Ú¿ÉÒÔ¶ÔHBase¶à°æ±¾Êý¾Ý½øÐвéѯ,Ó³Éä¡£

7.HBaseÔ­Éú½Ó¿ÚÖ§³Ö¡£

8.HTablePool¹ÜÀí¡£

Éè¼ÆÀíÄî

PhoenixµÄÉè¼ÆÀíÄîΪ:We put the SQL back into NoSql¡£

¸ÃÀíÄîµÄÓŵãÈçÏ£º

1.SQL×öΪ´óÖÚÊìϤµÄAPI£¬Óû§Ñ§Ï°³É±¾½ÏµÍ¡£

2.¼õÉÙ³ÌÐòÔ±µÄ´úÂ뿪·¢Á¿¡£

3.ÐÔÄÜÓÅ»¯¶ÔÓû§Í¸Ã÷¡£

4.¼æÈݼÈÓеĻùÓÚSQLµÄ¹¤¾ß¡£

¸ÃÀíÄîµÄȱµãÈçÏ£º

1.SQLÆÁ±ÎÁËHBaseºÍRDBMSÉè¼ÆÉϵIJî±ð£¬³éÏóй¶µÄ·çÏսϸߡ£¹ØÓÚ³éÏóй¶²Î¿¼http://www.joelonsoftware.com/articles/LeakyAbstractions.html¡£

2.ΪÁËSQL¼æÈÝ£¬ÒýÈëÁËJDBC²ã¡£ÓÉÓÚRDBMºÍHBaseµÄÉè¼ÆÓëÄ£Ðͱ¾Éí²îÒì½Ï´ó£¬ÒýÈëJDBCºó£¬µ¼Ö²¿·ÖHBaseµÄÌØÐÔÄÑÒÔÓѺõÄÖ§³Ö¡£

3.´ó²¿·ÖµÄÓ¦Óò»»áÖ±½ÓʹÓÃJDBC£¬¶øÊÇʹÓÃORM£¬¼¼ÊõÕ»½ÏÉµ¼Ö³éÏóй¶ÎÊÌâ¸ü¼ÓÑÏÖØ¡£

SimpleHBaseµÄÉè¼ÆÀíÄîΪ£ºÌù½üHBaseµÄORMÉè¼Æ£¬¼ò»¯HBaseÖ®ÉϵÄJava app¿ª·¢¡£

¸ÃÀíÄîµÄÓŵãÈçÏ£º

1.Éè¼Æ½ôÌùHBaseµÄÂß¼­Ä£ÐÍ£¬ÌṩһվʽHBase ORM½â¾ö·½°¸¡£

2.¼õÉÙ³ÌÐòÔ±µÄ´úÂ뿪·¢Á¿¡£

3.Óû§ÓѺõÄHBaseÌØÕ÷Ö§³Ö¡£

¸ÃÀíÄîµÄȱµãÈçÏ£º

1. ²»¼æÈÝSQL£¬ÓÐÒ»¶¨µÄѧϰ³É±¾¡£

SimpleHBaseºÍPhoenixµÄ¼¼ÊõÕ»ÈçÏÂËùʾ¡£

ÀàÐÍת»»

PhoenixÖ§³ÖÈçÏÂÀàÐÍ£¬Ä¿Ç°²»Ö§³Ö×Ô¶¨ÒåÀàÐÍ¡£Ã¿ÖÖÀàÐ͵ÄÐòÁл¯(ת»¯Îªbytes±£´æµ½HBaseÖÐ)ºÍ·´ÐòÁл¯Îª¹Ì¶¨µÄ·½Ê½¡£

SimpleHBaseÖ§³ÖÈçÏÂÀàÐÍ¡£Ã¿ÖÖÀàÐ͵ÄÐòÁл¯ºÍ·´ÐòÁл¯·½Ê½£¬¿ÉÒÔʹÓÃSimpleHBasÌṩµÄĬÈÏ·½Ê½£¬Ò²¿ÉÒÔÓû§×Ô¶¨Òå¡£

SimpleHBaseµÄrowkeyºÍÀàÐÍÓ³ÉäÈçÏ£º

RowKeyÖ§³Ö

Phoenix°ÑrowkeyÄÚ»¯ÎªtableµÄPRIMARY KEY´¦Àí¡£

Èç

CREATE TABLE IF NOT EXISTS us_population ( state CHAR(2)  NOT NULL, city VARCHAR NOT NULL,
population BIGINT CONSTRAINT my_pk  PRIMARY KEY (state, city));

ͬʱ£¬PhoenixµÄSalted Tables¼¼Êõ¿ÉÒÔ½â¾öregion serverµÄÈȵãÎÊÌâ¡£

SimpleHBaseÈÏΪrowkeyµÄÉè¼ÆÊÇHBaseÓ¦ÓÃÉè¼ÆÖÐ×îÖØÒªµÄÒ»»·¡£Òò´Ë£¬¶ÔÓÚRowKeyµ¥¶À½¨Ä££¬¸øÓû§Ìṩ½Ï¸ßµÄÁé»îÐÔ¡£Êµ¼ÊÉÏ£¬¶ÔÓÚHBase¶øÑÔ£¬ÈκοÉÒÔת»»ÎªbytesµÄ¶ÔÏ󶼿ÉÒÔ×öΪrowkeyʹÓá£

¼òµ¥³¡¾°Ö§³Ö

¶ÔÓÚ¼òµ¥µÄput,scan,delete³¡¾°¡£

PhoenixÌṩµÄ·½°¸Îª£º

Java app -> ORM(¿ÉÑ¡) -> SQL -> phoenix -> HBase

SimpleHBaseÌṩµÄ·½°¸Îª£º

Java app -> SimpleHBase-> HBase

ÎÞÐèSQLÕâÒ»²ã£¬Ö±½ÓÓÃÀàËÆÈçÏ´úÂë¼´¿ÉʵÏÖ¡£

simpleHbaseClient.putObject(new PersonRowKey(1), person);
Person result = simpleHbaseClient.findObject(new PersonRowKey(1),

Person.class);

¼òµ¥SQLÖ§³Ö

Phoenix×öΪHBaseÉÏÃæµÄSQL·â×°£¬Õâ¿éµÄ¹¦ÄܱȽϷḻ¡£SimpleHBaseÌṩSQL-Like·½Ê½µÄ²éѯ¡£Ö§³Ö³£¼ûµÄ¼òµ¥²éѯ³¡¾°¡£Ä¿Ç°£¬SimpleHBaseÌṩµÄÔËËã·ûÈçÏ£º

¸´ÔÓSQLÖ§³Ö

¶ÔÓÚgroup by, joinµÈ½ÏΪ¸´ÔÓµÄSQLÓï·¨£¬PhoenixÖ§³Ö£¬SimpleHBaseĿǰ²»Ö§³Ö¡£

¶¯Ì¬SQLÖ§³Ö

¶¯Ì¬²éѯ¿ÉÒÔ±ÜÃâÓ¦ÓôúÂëÖдóÁ¿if-elseÖ®ÀàµÄÅжϣ¬Æ´½Ó²éѯÌõ¼þ£¬Ìá¸ß´úÂëÖÊÁ¿¡£

PhoenixµÄ·½°¸£º

ÒýÈëÆäËûORM¿ò¼Ü(Èçhibernate»òmybatis)¡£

SimplehbaseµÄ·½°¸£º

ÀàËÆmybatis£¬Ìṩ¶¯Ì¬²éѯÄÜÁ¦¡£

ĿǰsimplehbaseÌṩµÄ¶¯Ì¬²éѯ±êÇ©ÈçÏ£º

HBaseʱ¼ä´ÁºÍ¶à°æ±¾Ö§³Ö

Phoenix·½°¸£º

ʱ¼ä´Á£¬ÓÉHBase¹ÜÀí£¬»òÔÚconnection½¨Á¢Ê±Ö¸¶¨Ò»¸öʱ¼ä´Á£¬¸ÃconnectionÉÏËùÓвÙ×÷¾ÍÊÇ»ùÓÚ¸Ãʱ¼ä´Á¡£

²»Ö§³Ö¶à°æ±¾£¬Ö»ÄÜÖ§³Ö×îÐÂÖµ¡£

Simplehbase·½°¸£º

ʱ¼ä´Á¿ÉÒÔÓÉHBase¹ÜÀí£¬»òÕßÓÉÓ¦ÓÃ×ÔÐÐÖ¸¶¨¡£°æ±¾Êý£¬¿ÉÒÔÑ¡Ôñ×îа汾£¬»òÕß¶à°æ±¾Ö§³Ö£¬ÓÉÓ¦ÓÃÖ¸¶¨¡£

¼ÙÉènameºÍageÓ³ÉäΪһ¸öPersonÀàÐͶÔÏó¡£SimpleHBaseÖ§³ÖÈçÏÂÓ³É䷽ʽ£º

1.Ò»¸örowkey¶ÔÓ¦µÄËùÓÐ×îÐÂÖµÓ³ÉäΪһ¸öobject¡£

Àý£º¸ÃÊý¾Ý±»Ó³ÉäΪPerson(name=d,age=3)¡£

2.Ò»¸örowkey¶ÔÓ¦µÄʱ¼ä´Á·¶Î§ÄÚ(ÓÉÓû§Ö¸¶¨)µÄ×îÐÂÖµÓ³ÉäΪһ¸öobject (PhoenixÖ»Ìṩһ¸öʱ¼ä´Á£¬¶ø²»ÊÇʱ¼ä´Á·¶Î§) ¡£

Àý£ºÖ¸¶¨Ê±¼ä´Á·¶Î§(×ó±ÕÓÒ¿ª)Ϊ [t1,t3)£¬¸ÃÊý¾Ý±»Ó³ÉäΪPerson(name=a,age=2)¡£

3.Ò»¸örowkey¶ÔÓ¦µÄËùÓÐÖµ£¬ÒÔʱ¼ä´ÁΪά¶È£¬Ó³Éä³ÉÒ»¸öobject list¡£

Àý£ºÖ¸¶¨maxVersion(¿ØÖÆ×î´ó°æ±¾Êý)Ϊ4,¸ÃÊý¾Ý±»Ó³ÉäΪһ¸öpersonµÄÁÐ±í£¬°´ÕÕʱ¼ä´ÁÅÅÐò¡£

Person(name=d)
Person(name=c,age=3)
Person(age=2)
Person(name=a,age=1)

4.Ò»¸örowkey¶ÔÓ¦µÄʱ¼ä´Á·¶Î§ÄÚµÄËùÓÐÖµ£¬ÒÔʱ¼ä´ÁΪά¶È£¬Ó³Éä³ÉÒ»¸öobject list¡£

Àý£ºÖ¸¶¨Ê±¼ä´Á·¶Î§Îª [t1,t3)£¬maxVersionΪ4,¸ÃÊý¾Ý±»Ó³ÉäΪһ¸öpersonµÄÁÐ±í£¬°´ÕÕʱ¼ä´ÁÅÅÐò¡£

Person(age=2)
Person(name=a,age=1)

ÆäËû

SimpleHBaseÖаüº¬ÁËһЩHBaseÌØÐԵķâ×°»òÔöÇ¿¡£

È磺

SimpleHBaseÖ§³ÖÅúÁ¿put²Ù×÷£¬ÒÔÌáÉýÐÔÄÜ¡£

HTableµÄautoflushÉèÖÃΪfalse£¬Í¬Ê±£¬ÓÐÒ»¸öÏ̶߳¨ÆÚ×öflush¡£¼È¿ÉÒÔÌá¸ßÓ¦ÓõÄÍÌÍÂÄÜÁ¦£¬Ò²¿ÉÒÔÓÐÒ»¶¨µÄflush±£Ö¤¡£

С½á

Ŀǰ£¬SimpleHBaseÒѾ­ÔÚ°¢ÀïµÄ¶à¸öÏîÄ¿Öеõ½Ó¦ÓᣴÓÉè¼ÆÀíÄî¿´£¬SimpleHBase²¢²»ÊÇPhoenixµÄÒ»¸öÖØ¸´ÂÖ×Ó£¬¶øÊÇÓÐ×Å×Ô¼ºÇåÎúµÄÄ¿±ê¡£¼´Ìù½üHBaseµÄORMÉè¼Æ£¬¼ò»¯HBaseÖ®ÉϵÄJava app¿ª·¢¡£Í¬Ê±£¬ÓÖ¿ÉÒÔ°ÑHBaseµÄһЩºËÐĸÅÄ¶¸øÓû§£¬·½±ãÓû§¶ÔHBaseÌØÐÔµÄʹÓá£

   
3202 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

MySQLË÷Òý±³ºóµÄÊý¾Ý½á¹¹
MySQLÐÔÄܵ÷ÓÅÓë¼Ü¹¹Éè¼Æ
SQL ServerÊý¾Ý¿â±¸·ÝÓë»Ö¸´
ÈÃÊý¾Ý¿â·ÉÆðÀ´ 10´óDB2ÓÅ»¯
oracleµÄÁÙʱ±í¿Õ¼äдÂú´ÅÅÌ
Êý¾Ý¿âµÄ¿çƽ̨Éè¼Æ


²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿â
¸ß¼¶Êý¾Ý¿â¼Ü¹¹Éè¼ÆÊ¦
HadoopÔ­ÀíÓëʵ¼ù
Oracle Êý¾Ý²Ö¿â
Êý¾Ý²Ö¿âºÍÊý¾ÝÍÚ¾ò
OracleÊý¾Ý¿â¿ª·¢Óë¹ÜÀí


GE Çø¿éÁ´¼¼ÊõÓëʵÏÖÅàѵ
º½Ìì¿Æ¹¤Ä³×Ó¹«Ë¾ Nodejs¸ß¼¶Ó¦Óÿª·¢
ÖÐÊ¢Òæ»ª ׿Խ¹ÜÀíÕß±ØÐë¾ß±¸µÄÎåÏîÄÜÁ¦
ijÐÅÏ¢¼¼Êõ¹«Ë¾ PythonÅàѵ
ij²©²ÊITϵͳ³§ÉÌ Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À
ÖйúÓÊ´¢ÒøÐÐ ²âÊÔ³ÉÊì¶ÈÄ£Ðͼ¯³É(TMMI)
ÖÐÎïÔº ²úÆ·¾­ÀíÓë²úÆ·¹ÜÀí