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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÌÔ±¦¿ªÔ´Êý¾Ý¿âOceanBase±àÒë¡¢°²×°ºÍÅäÖÃÊÖ²á
 
×÷ÕߣºEugene À´Ô´£ºTechTargetÖйú ·¢²¼ÓÚ 2015-11-9
  3906  次浏览      27
 

¸ÅÊö

OceanBaseÊÇ Ò»¸ö¸ßÐÔÄܵķֲ¼Ê½±í¸ñϵͳ£¬ÌṩÀàËÆBigTableµÄÐÔÄܺÍÀ©Õ¹ÐÔ£¬µ«±í¸ñÖб£´æµÄÊÇÇ¿ÀàÐ͵ÄÊý¾Ý£¬±ÈÈçinteger,string£¬datetimeµÈ¡£ ËüʹÓÃC++±àд£¬ÔËÐÐÓÚ64λLinux»·¾³Ï¡£Éú²ú»·¾³ÏÂÐèҪʹÓöą̀»úÆ÷´î½¨OceanBase¼¯ÈºÒÔÌṩ¸ß¿ÉÓú͸ßÐÔÄÜ£¬µ«ÊÇÄãÒ²ÍêÈ«¿ÉÒÔʹÓÃÒ» ̨»úÆ÷ÔËÐÐOceanBase¡£

±¾Õ½ڽ²½âÈçºÎѸËٴһ¸ö¿ÉÓõÄ×îСOceanBase»·¾³£¬ÔÚÕâ֮ǰÇëÈ·±£ÄãÄÜÌṩÒÔϵÄÌõ¼þ:

64λµÄLinux·þÎñÆ÷һ̨, ÄÚ´æÖÁÉÙ1G¡£

×ã¹»µÄ´ÅÅ̿ռ䣬×îÉÙ100MB¡£

ÓµÓÐrootȨÏÞ»òÄÜͨ¹ýsudoÌáÉýÖÁrootȨÏÞ¡£

Èç¹ûÄãÂú×ãÒªÇ󣬹§Ï²Äã¡£¿ÉÒÔ¼ÌÐø°²×°OceanBaseµÄ¹ý³ÌÁË¡£Õâ´ó¸Å·ÖΪÈçϼ¸¸ö²½Öè:

´ÓÔ´Âë±àÒë°²×°OceanBase¼°ÆäÒÀÀµµÄ¿â

Æô¶¯OceanBase

ʹÓÃOceanBase

×îºó£¬ÎÒÃÇ»á¶ÔOceanBaseÖеÄÅäÖÃ×öÒ»¸ö´ÖÂԵĽâÊÍÒÔ°ïÖúÄã½â¾öÆô¶¯Ê±Óöµ½µÄÎÊÌâ¡£

´ÓÔ´Âë±àÒë°²×°OceanBase¼°ÆäÒÀÀµµÄ¿â

ÔÚ°²×°OceanBase֮ǰ£¬Çë¼ì²égccµÄ°æ±¾:

gcc --version

×îºÃÓÃgcc 4.1.2±àÒ룬Èç¹û°æ±¾²»Æ¥Å䣬²»Ò»¶¨¿ÉÒÔ±àÒë³É¹¦£¬»¶Ó­´ó¼Ò²âÊÔ²»Í¬°æ±¾µÄ±àÒëÆ÷£¬Í¬Ê±»¶Ó­´ó¼ÒÌṩpatchÈÃOceanBaseÄÜÔÚ¸ü¶à°æ±¾µÄ±àÒëÆ÷ϱàÒëͨ¹ý¡£

OceanbaseÔÚÔËÐÐʱÐèÒªÓõ½Ò»Ð©¶¯Ì¬¿â£¬½¨ÒéÔÚbashrcÖн«LD_LIBRARY_PATHÉèÖúãº

echo "export TBLIB_ROOT=$HOME/ob-install-dir"  >> ~/.bashrc 
echo "export LD_LIBRARY_PATH=/usr/lib/:/usr/local/lib:\$TBLIB_ROOT /lib:\$HOME/ob-install-dir/lib:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc

°²×°ÒÀÀµµÄ¿â:[libtoolize]

±àÒë½Å±¾ÖÐÓõ½ÁËaclocal, autoconf, automakeµÈ¹¤¾ß£¬Ò»°ã»úÆ÷ÉÏ»á×Ô´ø¡£Èç¹û»úÆ÷ÉÏûÓа²×°£¬ÇëÏȰ²×°£º

sudo yum install libtool.x86_64

liblzo2

liblzo2ÊÇÒ»¸öѹËõ¿â£¬OceanBaseÐèÒªÓÃËüÀ´Ñ¹Ëõ¾²Ì¬Êý¾Ý. ÀûÓÃyum¿ìËÙ°²×°

sudo yum install LZO.x86_64

Èç¹ûyumÕÒ²»µ½Õâ¸ö°ü£¬¿ÉÒÔÑ¡ÔñÊÖ¶¯°²×°£º

wget -c http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz 
tar zxf lzo-*
(cd lzo-2.03; ./configure --enable-shared --prefix=/usr/ && make && sudo make install)

°²×°Íê³ÉºóÄã¿ÉÒÔ±àÒëÒ»¸öC³ÌÐò¿´¿´±àÒëÆ÷ÄÜ·ñÕÒµ½Ëü:

echo "int main(){ return 0;}" > /tmp/a.c && gcc /tmp/a.c -llzo2 -o /tmp/a.out 
/tmp/a.out

Èç¹ûû±¨´í¾Í˵Ã÷°²×°³É¹¦ÁË¡£Èç¹ûÏÔʾÏÂÃæµÄÏûÏ¢Ôò˵Ã÷$LD_LIBRARY_PATH±äÁ¿Ã»ÓÐÅäÖÃÕýÈ·£¬ÇëÈ·¶¨liblzo2.so.2ËùÔÚĿ¼²¢¼ÓÈëµ½$LD_LIBRARY_PATHÖС£

./a.out: error while loading shared libraries: liblzo2.so.2: cannot open shared object file: No such file or directory

Snappy

SnappyÊÇGoogle³öÆ·µÄѹËõ¿â£¬OceanBaseÓÃËüÀ´Ñ¹Ëõ¾²Ì¬Êý¾Ý[¿ÉÑ¡]. ×¢Ò⣺SnappyÒÀÀµÓÚlzo¿â£¬ÇëÏÈ×°lzo¿âÔÙ×°Snappy¡£ÀûÓÃyum¿ìËÙ°²×°

sudo yum install Snappy.x86_64

Èç¹ûyumÕÒ²»µ½Õâ¸ö°ü£¬¿ÉÒÔÑ¡ÔñÊÖ¶¯°²×°£º

cd ~ 
wget -c http://snappy.googlecode.com/files/snappy-1.0.3.tar.gz
tar zxf snappy-*
(cd snappy-1.0.3; ./configure --prefix=/usr/ && make && sudo make install)

°²×°Íê³ÉºóÄã¿ÉÒÔ±àÒëÒ»¸öC³ÌÐò¿´¿´±àÒëÆ÷ÄÜ·ñÕÒµ½Ëü:

echo "int main(){ return 0;}" > /tmp/a.c && gcc /tmp/a.c -o /tmp/a.out -lsnappy 
/tmp/a.out

Èç¹ûû±¨´í¾Í˵Ã÷°²×°³É¹¦ÁË¡£Èç¹ûÏÔʾÏÂÃæµÄÏûÏ¢Ôò˵Ã÷$LD_LIBRARY_PATH±äÁ¿Ã»ÓÐÅäÖÃÕýÈ·£¬ÇëÈ·¶¨liblzo2.so.2ËùÔÚĿ¼²¢¼ÓÈëµ½$LD_LIBRARY_PATHÖС£

./a.out: error while loading shared libraries: libsnappy.so.1: cannot open shared object file: No such file or directory

libnuma

OceanbaseÖÐÓõ½ÁËNUMAÖ§³Ö£¬ÐèÒªlibnumaµÄÖ§³Ö¡£ÏÂÃæÍ¨¹ýyum°²×°numactlÀ´Ìí¼ÓnumaÏà¹ØµÄÍ·ÎļþºÍ¿â¡£

sudo yum install numactl-devel.x86_64

Èç¹ûyumÕÒ²»µ½Õâ¸ö°ü£¬¿ÉÒÔÑ¡ÔñÊÖ¶¯°²×°£º

cd ~ 
wget -c http://freshmeat.net/urls/5994b4dd6cf45abcf4c4ed8c16a75f24 # Èç¹û¸ÃµØÖ·Ê§Ð§£¬Çëµ½http://freshmeat.net/projects/numactl/ÊÖ¹¤ÏÂÔØ
tar zxf numactl-*
(cd numactl-2.0.7; make && sudo make install)

libaio

OceanbaseÖÐÓõ½ÁËAIO£¬ÐèÒªlibaioµÄÖ§³Ö¡£ÏÂÃæÍ¨¹ýyum°²×°libaioÀ´Ìí¼ÓnumaÏà¹ØµÄÍ·ÎļþºÍ¿â¡£

sudo yum install libaio-devel.x86_64

Èç¹ûyumÕÒ²»µ½Õâ¸ö°ü£¬¿ÉÒÔÑ¡ÔñÊÖ¶¯°²×°£º

cd ~ 
wget -c http://libaio.sourcearchive.com/downloads/0.3.107-7/libaio_0.3.107.orig.tar.gz # Èç¹û¸ÃµØÖ·Ê§Ð§£¬Çëµ½http://libaio.sourcearchive.com/ÊÖ¹¤ÏÂÔØ
tar zxf libaio*
(cd libaio-0.3.107; make && sudo make install)

tbsysÊǶԲÙ×÷ϵͳ·þÎñµÄ·â×°£¬tbnetÔòÌṩÁËÍøÂç¿ò¼Ü£¬OceanBaseÒÀÀµÓÚÕâÁ½¸ö¿â¡£ tbnetºÍtbsys±»×÷Ϊtb-common-utils±»¿ªÔ´ÁË£¬ ¿ÉÒÔ·ÃÎÊ http://code.taobao.org/trac/tb-common-utils/wiki/ZhWikiStart ÒÔÁ˽â¸ü¶àÇé¿ö¡£ ×¢Ò⣬°²×°ºÍʹÓÃtbnetºÍtbsys֮ǰ£¬ÒªÉèÖúà TBLIB_ROOT Õâ¸ö»·¾³±äÁ¿£¬Õâ¸ö»·¾³±äÁ¿Ö¸Ê¾Á˰²×°tbnetºÍtbsys¿âµÄ·¾¶.

ÓÃÈçÏÂÃüÁîÏÂÔØÔ´Âë²¢±àÒë°²×°:

cd ~ 
export TBLIB_ROOT=$HOME/ob-install-dir
svn checkout http://code.taobao.org/svn/tb-common-utils/trunk/ tb-common-utils
(cd tb-common-utils; sh build.sh)

°²×°³É¹¦ºó, TBLIB_ROOT ËùָʾµÄĿ¼Ï»áÓÐincludeºÍlibÁ½¸öĿ¼£¬¿ÉÓÃÈçϵÄÃüÁîÑéÖ¤±àÒëÆ÷ÄÜ·ñÕÒµ½¿â:

echo "int main(){ return 0;}" > /tmp/a.c && gcc /tmp/a.c -o /tmp/a.out -L$TBLIB_ROOT/lib -ltbnet -ltbsys 
/tmp/a.out

Èç¹û±¨´í£¬¼ì²é TBLIB_ROOT ÊÇ·ñÉèÖÃÕýÈ·ÁË

gtest

¿ÉÑ¡¡£Èç¹ûÄãÖ´ÐÐ./configure ¨Cwithout-test-case²»±àÒëOBµÄtest£¬ÄÇôÕâÒ»½Ú¿ÉÒÔºöÂÔ¡£Èç¹ûÄãÒª±àÒëtest£¬±¾½ÚÄÚÈݽö¹©²Î¿¼£ºÐ°ægtestÊDz»ÔÊÐí°² ×°µÄ£¬gtestÉϵÄwikiÓÐ˵µ½¡£½¨Òé./configure && makeÖ®ºó£¬Ö±½Ó:

cp -r gtest-build-dir/include/gtest ob-src-dir/include 
cp -r gtest-build-dir/lib/.libs ob-src-dir/lib

±àÒë°²×°OceanBase

¼ì³öOB·ÖÖ§Ô´´úÂ룺

cd ~ 
#¿ªÔ´ºósvnµØÖ· svn co http://code.taobao.org/svn/oceanbase/trunk/ ob-src-dir
svn co http://svn.app.taobao.net/repos/oceanbase/branches/rm/oceanbase/ ob-src-dir

±àÒë°²×°


(cd ob-src-dir; ./build.sh init && ./configure --prefix=$HOME/ob-install-dir --with-release --without-test-case && make -j2 && make install)

×¢Òâ ¨Cwithout-test-case±íʾ²»±àÒë²âÊÔÓÃÀý£¬ÒòΪOceanBaseʹÓÃgoogletest×÷Ϊ²âÊÔ¿ò¼Ü£¬Èç¹ûÄãÏëÅܵ¥Ôª²âÊÔ£¬ÐèÒª°ÑgoogletestµÄÍ·ÎļþºÍ¿â·ÅÈëµ½oceanbaseÔ´Âë¶¥²ãĿ¼µÄincludeºÍlibĿ¼¡£ °²×°Íê³ÉºóÐèÒª½øÐÐÒ»´Î³õʼ»¯£¬¸ù¾Ýµ±Ç°»úÆ÷ÅäÖÃÉú³É±ØÒªµÄ³õʼ»¯Îļþ¡£Ö´ÐÐsingle-machine-bootstrap½Å±¾¾Í¿ÉÒÔÍê³ÉÈ«²¿³õʼ»¯¹¤×÷¡£

cd $HOME/ob-install-dir 
./single-machine-bootstrap init# ´´½¨±ØÒªµÄĿ¼£¬Éú³ÉÅäÖÃÎļþ

Ò»Çгõʼ»¯Íê³ÉºóϵͳĿ¼ÈçÏÂͼËùʾ£º

/
|--/usr/lib/
| |-- liblzo*.so.*
| |-- libsnappy*.so.*
| `-- ...
|
|--$HOME
|-- tb-common-utils
|-- ob-src-dir
| `- ...
|
`-- ob-install-dir
|-- single-machine-bootstrap
|-- include
|-- lib
|-- bin
|-- @etc
| |-- rootserver.conf
| |-- mergeserver.conf
| |-- chunkserver.conf
| |-- updateserver.conf
| `-- schema.ini
|
`-- @data
|-- ups_commitlog
|-- rs_commitlog
|-- ups_data
|-- log
|-- cs
`-- rs

Æô¶¯OceanBase

ÔÚÕû¸öOceanBase¼¯ÈºÖÐÒ»¹²ÓÐËÄÖÖ½ÇÉ«£ºRootServer?,UpdateServer?,ChunkServer?ºÍMergeServer:

RootServerÊǼ¯ÈºµÄÖÐÐÄ¿ØÖƽáµã

UpdateServerÊǼ¯ÈºµÄ¸üзþÎñ½áµã

ChunkServerÊǼ¯Èº¾²Ì¬Êý¾Ý´æ´¢½áµã

MergeServerΪ²éѯ·þÎñ½áµã¡£

Ó¦ÓóÌÐòʹÓÃOceanBase£¬ÐèҪͨ¹ý¿Í»§¶Ë¿â£¬¿Í»§¶ËÖ»ÐèÒªÖªµÀRootServerµÄµØÖ·¼´¿É¡£

ÔÚ×î¼òµ¥µÄÇé¿öÏ£¬OceanBaseÓÉÒ»¸öRootServer, Ò»¸öUpdateServer, Ò»¸öChunkServerºÍÒ»¸öMergeServer×é³É£¬ÕâËĸöServer¶¼ÔËÐÐÔÚͬһ̨ÎïÀí»úÉÏ¡£¿ÉÒÔÓÃÈçϵÄÃüÁîÆô¶¯ËĸöServer:

cd $HOME/ob-install-dir 
bin/rootserver -f etc/rootserver.conf
bin/updateserver -f etc/updateserver.conf
bin/mergeserver -f etc/mergeserver.conf
bin/chunkserver -f etc/chunkserver.conf

µ±È»£¬OceanBase²¢²»Ç¿ÖÆÒªÇóËĸöServerµÄÆô¶¯Ë³Ðò¡£

Server¶¼×÷ΪdaemonÔËÐУ¬¿ÉÒÔÓÃÈçÏÂÃüÁî²é¿´¶ÔÓ¦µÄlog£º

cd $HOME/ob-install-dir 
tail -f data/log/rootserver.log
tail -f data/log/updateserver.log
tail -f data/log/mergeserver.log
tail -f data/log/chunkserver.log

Ôڳɹ¦Æô¶¯OceanBaseºó£¬°´ÕÕĬÈϵÄÅäÖÃÈÏÉú³ÉÁËÒ»¸öÃûΪtestµÄ±í¡£Õâ¸ö±íÊǵäÐ͵ÄkvÊý¾Ý±í£¬¿ÉÒÔʹÓÃOceanBaseÌṩµÄAPI¶ÁдÕâ¸ö±í¡£ ÈçÓÐÔËÐÐÓÐÎÊÌ⣬¿ÉÒԲο¼ºóÃæ¹ØÓÚÅäÖõĸü¼ÓÏêϸµÄ½âÊÍ¡£

ʹÓÃOceanBase

TODO

ÅäÖÃÎļþ˵Ã÷

OceanBaseÌṩ±í¸ñ´æ´¢·þÎñ£¬ËùÒÔÊ×ÏÈÒªÓÐÒ»¸öschemaÎļþÃèÊö±í¸ñ£¬Æä´ÎRootServer, UpdateServer?, ChunkServer?ºÍMergeServer¶¼ÓÐ×Ô¼ºµÄÅäÖÃÎļþ¡£ ËĸöServerµÄÅäÖÃÎļþÊÇÔÚÆô¶¯Serverʱͨ¹ýÃüÁîÐвÎÊýÖ¸¶¨µÄ£¬schemaÎļþµÄ·¾¶ÊÇÔÚRootServerµÄÅäÖÃÎļþÖÐÖ¸¶¨µÄ¡£

ÐÞ¸ÄÊý¾Ý¿âschemaÅäÖÃÎļþ

Ò»¸öschemaÅäÖÃÎļþÃèÊöÒ»¸öÓ¦Óã¬Ò»¸öÓ¦ÓÿÉÒÔÓжà¸ö±í¸ñ£¬ÅäÖÃÎļþÖÐÒªÖ¸¶¨Ó¦ÓõÄÃû×Ö£¬¼°Ã¿¸ö±íµÄÃû×Ö£¬Ã¿Ò»ÁеÄÃû×Ö£¬ÀàÐ͵ÈÐÅÏ¢¡£ ÏêϸµÄÃèÊö²Î¼ûÔ´Âë°üµÄÎĵµ: doc/OceanBaseµÄschema.docx

[app_name] 
name = Êý¾Ý¿âÓ¦ÓÃÃû³Æ
max_table_id = Ó¦ÓõÄ×î´óÊý¾Ý±íID

[Êý¾Ý±í1Ãû³Æ]
table_id = Êý¾Ý±í1µÄID
...ÆäËû×ֶκ¬ÒåÒª²Î¿¼OBÎĵµ...
compress_func_name=lzo_1.0
column_info=1,2,info_user_nick,varchar,128
....

[Êý¾Ý±í2Ãû³Æ]
table_id = Êý¾Ý±í2µÄID
compress_func_name=lzo_1.0
...

ÐÞ¸Ä rootserver.conf

RootServer?µÄÅäÖÃÖ÷ÒªÖ¸¶¨×Ô¼ºµÄµØÖ·¼°UpdateServerµÄµØÖ·£¬SchemaÎļþµÄ·¾¶µÈ¡£

ÐÞ¸Ä updateserver.conf

UpdateServer?µÄÅäÖÃÖ÷ÒªÖ¸¶¨×Ô¼ºµÄµØÖ·¼°RootServerµÄµØÖ·£¬ Êý¾ÝµÄ´æ´¢Ä¿Â¼µÈÐÅÏ¢¡£

 [root_server] 
pid_file = rootserverµÄpidÎļþ·¾¶
log_file = rootserverµÄÔËÐÐÈÕÖ¾Îļþ·¾¶
data_dir = rootserverµÄ³Ö¾Ã»¯Êý¾ÝĿ¼

log_level = rootserverµÄÈÕÖ¾¼¶±ð
dev_name = rootserver¼àÌýµÄÍø¿¨Ãû³Æ£¬Èçeth0
vip = rootserverµÄVIPÉ豸µØÖ·£¬ÓÃÀ´ÊµÏÖÈȱ¸£¬¿ª·¢»·¾³ÖÐÖ»ÐèÒªµ¥rootserver£¬ÕâÀïÖ¸¶¨ÎªrootserverµØÖ·¼´¿É
port = rootserverµÄ¼àÌý¶Ë¿Ú

__create_table_in_init=1 # ÔÚϵͳ³õʼ»¯Ê±½¨Á¢±í
__safe_copy_count_in_init=1 # ·ÀÖ¹ÔÚÖ»ÓÐ1¸öchunkserverʱ²úÉúwarnÐÅÏ¢
__safe_copy_count_in_merge=1 #

[update_server]
vip = updateserverµÄVIPÉ豸µØÖ·£¬ÓÃÀ´ÊµÏÖÈȱ¸£¬ÒòΪrootserverÊÇÖ÷¶¯Á¬½ÓupdateserverµÄ¡£¿ª·¢»·¾³ÖÐÖ»ÐèÒªµ¥updateserver£¬ÕâÀïÖ¸¶¨ÎªupdateserverµØÖ·¼´¿É
port = updateserverµÄ¼àÌý¶Ë¿Ú£¬ÒÔ±ãrootserverÁ¬½Ó
ups_inner_port=updateserverµÄµÍÓÅÏȼ¶¼àÌý¶Ë¿Ú£¬ÒÔÓÃÓÚÿÈպϲ¢

[schema]
file_name = Êý¾Ý¿âschemaÅäÖÃÎļþ·¾¶

¹ØÓÚUpdateServerµÄÊý¾ÝĿ¼½á¹¹

store_root, raid_regexºÍdir_regex ¹²Í¬Ö¸¶¨ÁËUpdateServerµÄÊý¾ÝĿ¼£¬UpdateServer?ÒÔ sstableµÄ·½Ê½±£´æÊý¾Ý¡£ÔÚ store_root ÏîÖ¸¶¨µÄĿ¼Ï½¨Á¢¶à¸öÓë raid_regex ÅäÖÃÏîÆ¥ÅäµÄĿ¼£¬ ĿǰĬÈϵÄĿ¼ÃûÊÇÕâÑùµÄraid1 raid2 raid3 ¡­.£¬Í¬Ò»¸össtableÎļþ»áÔÚÒ»¸öraidĿ¼²úÉú¶à·Ý¿½±´£¬ÔÚÉÏÊöÿ¸öraidĿ¼Ï½¨Á¢¶à¸öÓë dir_regex ÅäÖÃÏîÆ¥ÅäµÄÈíÁ´½Ó£¬Ä¿Ç°Ä¬ÈϵÄĿ¼ÃûÊÇÕâÑùµÄstore1 store2 store3¡­ ·Ö±ðÖ¸Ïò²»Í¬É豸¹ÒÔØµãϵÄĿ¼(Èç /data/1-1/ups_store /data/1-2/ups_store¡­ ), ÔÚ²âÊÔʱÎÒÃÇ¿ÉÒÔʹÓÃÆÕͨµÄĿ¼´úÌæ¹ÒÔØµã¡£

Òò´Ë½¨Á¢ºÃµÄ»·¾³ÓÃtreeÃüÁî¿´ÊÇÕâÑùµÄ£º

data
|-- raid1
| |-- store1 -> /data/1-1/ups_store/
| |-- store2 -> /data/1-2/ups_store/
| |-- store3 -> /data/1-3/ups_store/
| |-- store4 -> /data/1-4/ups_store/
| `-- store5 -> /data/1-5/ups_store/
`-- raid2
|-- store1 -> /data/2-1/ups_store/
|-- store2 -> /data/2-2/ups_store/
|-- store3 -> /data/2-3/ups_store/
|-- store4 -> /data/2-4/ups_store/
`-- store5 -> /data/2-5/ups_store/

¿ÉÓÃÈçϵÄÃüÁÁ¢Ä¿Â¼ºÍÁ´½Ó

mkdir -p /data/{raid{1..2},{1..2}-{1..5}/ups_store} for i in {1..2}; do 
for j in {1..5}; do
ln -s /data/$i-$j/ups_store /data/raid$i/store$j; # ×¢ÒâÕâÀィÁ¢ÈíÁ´½Óʱ×îºÃʹÓþø¶Ô·¾¶
done
done

ÐÞ¸Ä mergeserver.conf

MergerServer?µÄÅäÖÃÖ÷ÒªÖ¸¶¨RootServerµÄµØÖ·µÈ¡£

 [merge_server] 
port = mergeserver¼àÌý¶Ë¿Ú
dev_name = mergeserver¼àÌýÍø¿¨Ãû³Æ£¬Èçeth0
log_file = mergeserverµÄÔËÐÐÈÕÖ¾Îļþ·¾¶
pid_file = mergeseverµÄpidÎļþ·¾¶
log_level = mergeserverµÄÈÕÖ¾¼¶±ð

[root_server]
vip = rootserverµÄVIPÉ豸µØÖ·£¬¿ª·¢»·¾³ÖÐÖ»ÒªÖ¸¶¨ÎªrootserverµØÖ·¼´¿É
port = rootserverµÄ¼àÌý¶Ë¿Ú

ÐÞ¸Ä chunkserver.conf

ChunkServer?µÄÅäÖÃÖ÷ÒªÖ¸¶¨RootServerµÄµØÖ·, Êý¾Ý´æ´¢Ä¿Â¼µÈ¡£

[public] 
pid_fie = chunkserverµÄÔËÐÐÈÕÖ¾Îļþ·¾¶
log_file = chunkserverµÄpidÎļþ·¾¶
log_level = chunkserverµÄÈÕÖ¾¼¶±ð

[chunkserver]
dev_name = chunkserverµÄ¼àÌýÍø¿¨Ãû³Æ£¬Èçeth0
port = chunkserverµÄ¼àÌý¶Ë¿Ú
datadir_path = chunkserverÊý¾Ý³Ö¾Ã»¯Ä¿Â¼µÄ·¾¶
application_name = Êý¾Ý¿âÓ¦ÓÃÃû³Æ
[root_server]
vip = rootserverµÄVIPÉ豸µØÖ·£¬¿ª·¢»·¾³ÖÐÖ»ÒªÖ¸¶¨ÎªrootserverµØÖ·¼´¿É
port = rootserver¼àÌý¶Ë¿Ú

chunkserverµÄÊý¾Ý·ÅÔÚ /datadir_path/$i/application_name/sstable ÏÂ, ²¢ÇÒÓÉÓÚ¸ÃĿ¼²¢²»´æÔÚÒò´ËÐèÒª½¨Á¢¶ÔÓ¦µÄĿ¼

  mkdir -p /datadir_path/{1..10}/application_name/sstable
   
3906 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

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

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

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