é¨è伿¥(yè)ä¿¡æ¯å建è¨(shè)çæ·±å ¥ç¼(fÄ)å±ï¼ä¸åçæ¥(yè)å(wù)é¨éæä¸åææå¼å ¥çæ(yÄ«ng)ç¨ç³»çµ±(tÇng)å¾å¾éç¨ä¸åçæ¸(shù)æ(jù)庫æè¡(shù)ï¼å¦é(guÄn)ç³»åæ¸(shù)æ(jù)庫ï¼MySQL, PostgreSQL, Oracleï¼ãNoSQLæ¸(shù)æ(jù)庫ï¼MongoDB, Redisï¼ã以忏(shù)æ(jù)å庫ï¼Hive, ClickHouseï¼çï¼ç±æ¤å½¢æäºå¾©(fù)éçç°æ§(gòu)æ¸(shù)æ(jù)庫ç°(huán)å¢ãå¨éç¨®èæ¯ä¸ï¼å¦ä½é«æãæºç¢ºãå®å ¨å°å¨éäºç°æ§(gòu)æ¸(shù)æ(jù)庫ä¹éé²è¡æ¸(shù)æ(jù)è½(zhuÇn)æèéæï¼å¹¶æä¾ç©©(wÄn)å®å¯é çæ¸(shù)æ(jù)èçèå岿¯ææå(wù)ï¼æçºä¼æ¥(yè)æ¸(shù)æ(jù)æ²»çèå¹å¼ææçé(guÄn)鵿æ°(zhà n)ãæ¬ææ¨å¨æ¢è¨ç°æ§(gòu)æ¸(shù)æ(jù)庫系統(tÇng)æ¸(shù)æ(jù)è½(zhuÇn)ææ¹æ³çè¨(shè)è¨æè·¯è實ç¾(xià n)è·¯å¾ï¼å¹¶é¡è¿°å ¶å¨æ¸(shù)æ(jù)èçèå岿¯ææå(wù)ä¸çæ(yÄ«ng)ç¨ã
ä¸ã ç°æ§(gòu)æ¸(shù)æ(jù)è½(zhuÇn)æçæ ¸å¿ææ°(zhà n)
å¨ç°æ§(gòu)æ¸(shù)æ(jù)庫éé²è¡æ¸(shù)æ(jù)è½(zhuÇn)æï¼ä¸»è¦é¢è¨ä»¥ä¸æ ¸å¿ææ°(zhà n)ï¼
- æ¸(shù)æ(jù)模åç°æ§(gòu)æ§ï¼é(guÄn)系模åãææªæ¨¡åãéµå¼æ¨¡åã忍¡åçæ¸(shù)æ(jù)çµ(jié)æ§(gòu)çæ ¹æ¬å·®ç°ã
- æ¸(shù)æ(jù)é¡åèèªç¾©ä¸å¹é ï¼ç¸ååç¨±çæ¸(shù)æ(jù)é¡åï¼å¦âæ¥æâãâå符串âï¼å¨ä¸åæ¸(shù)æ(jù)庫ä¸å¯è½åå¨ç²¾åº¦ãæ ¼å¼æèªç¾©ä¸çå·®ç°ã
- æ¸(shù)æ(jù)模å¼ï¼Schemaï¼çåæ (tà i)æ§èåæ§ï¼NoSQLæ¸(shù)æ(jù)庫å¯è½æ¨¡å¼éæ´»æç¡æ¨¡å¼ï¼èé(guÄn)ç³»æ¸(shù)æ(jù)庫模å¼å´æ ¼ï¼å ©è è½(zhuÇn)ææéè¦èçæ¨¡å¼æ å°èæ¼åã
- æ¸(shù)æ(jù)ä¸è´æ§è宿´æ§ç´æï¼äºå(wù)ç¹æ§ã主å¤éµç´æçå¨ç°æ§(gòu)ç°(huán)å¢ä¸çé·ç§»èä¿æåé¡ã
- è½(zhuÇn)ææ§è½èæçï¼æµ·éæ¸(shù)æ(jù)é·ç§»æçååéãå»¶é²ä»¥åå°æºç«¯åç®æ¨ç«¯ç³»çµ±(tÇng)æ§è½çå½±é¿ã
äºã æ¸(shù)æ(jù)è½(zhuÇn)ææ¹æ³çè¨(shè)è¨æ¡æ¶
ä¸åå¥å£¯çç°æ§(gòu)æ¸(shù)æ(jù)è½(zhuÇn)æç³»çµ±(tÇng)è¨(shè)è¨é常éµå¾ªä»¥ä¸åå±¤æ¡æ¶ï¼
1. å
æ¸(shù)æ(jù)管ç層
- åè½ï¼çµ±(tÇng)ä¸ééã管çåæ å°æºæ¸(shù)æ(jù)庫èç®æ¨æ¸(shù)æ(jù)庫çå
æ¸(shù)æ(jù)ä¿¡æ¯ï¼å
æ¬è¡¨çµ(jié)æ§(gòu)ãåæ®µé¡åãç´æé(guÄn)ç³»ãæ¸(shù)æ(jù)åå
¸çã
- 實ç¾(xià n)ï¼æ§(gòu)建ä¸å¤®å æ¸(shù)æ(jù)å庫ï¼ééé©é å¨é£æ¥å顿¸(shù)æ(jù)庫çå æ¸(shù)æ(jù)æ¥å£ï¼å¦INFORMATION_SCHEMA, system tablesï¼ï¼å¹¶å»ºç«å¯è¦åæ å°è¦(guÄ«)åé ç½®çé¢ã
2. è½(zhuÇn)æè¦(guÄ«)åèæ å°å¼æå±¤
- åè½ï¼å®ç¾©åå·(zhÃ)è¡å¾æºå°ç®æ¨çæ¸(shù)æ(jù)è½(zhuÇn)æè¦(guÄ«)åã鿝è¨(shè)è¨çæ ¸å¿ã
- é(guÄn)éµè¨(shè)è¨ï¼
- çµ(jié)æ§(gòu)æ å°ï¼å®ç¾©è¡¨å°éåãè¡å°ææªãåå°å段çå°è±¡ç´æ å°ã
- æ¸(shù)æ(jù)é¡åè½(zhuÇn)æå¨ï¼çºæ¯å°âæºé¡å-ç®æ¨é¡åâéç¼(fÄ)坿æçè½(zhuÇn)æå¨ï¼èçæ ¼å¼ã精度ã編碼çè½(zhuÇn)æï¼å¦OracleçDATEå°MongoDBçISODateï¼ã
- èªç¾©è½(zhuÇn)æèæ¸ æ´ï¼ééå §(nèi)ç½®å½æ¸(shù)æèªå®ç¾©è ³æ¬ï¼å¦SQL, JavaScript, Pythonï¼é²è¡æ¸(shù)æ(jù)æ¸ æ´ãè¨ç®æ´¾çåæ®µãåå¹¶æååæ®µçã
- ç´æèççç¥ï¼å®ç¾©å¦ä½èçéç©ºç´æãå¯ä¸æ§ç´æãå¤éµé(guÄn)ç³»çå¨ç®æ¨ç«¯ç實ç¾(xià n)æè»åçç¥ã
3. æ¸(shù)æ(jù)æ½åãè½(zhuÇn)æèå è¼ï¼ETL/ELTï¼å·(zhÃ)è¡å¼æå±¤
- åè½ï¼è² 責(zé)髿å·(zhÃ)è¡æ¸(shù)æ(jù)ç§»åèè½(zhuÇn)æéç¨ã
- 實ç¾(xià n)èéï¼
- æ½åçç¥ï¼æ¯æå ¨éæ½åãåºäºæéæ³/å¢éæ¨èçå¢éæ½åã以åè®æ´æ¸(shù)æ(jù)æç²ï¼CDCï¼ã
- è½(zhuÇn)æå·(zhÃ)è¡æ¨¡å¼ï¼æ¯æå³çµ±(tÇng)çETLï¼å¨å°ç¨å¼æä¸è½(zhuÇn)æåå è¼ï¼åç¾(xià n)代çELTï¼å å è¼å°ç®æ¨ç«¯è¨æå(qÅ«)ï¼å©ç¨ç®æ¨ç«¯å¼·å¤§è¨ç®è½åè½(zhuÇn)æï¼ã
- ä»»å(wù)調(dià o)度èç£(jiÄn)æ§ï¼æä¾å¯è¦åç工使µç·¨æãä»»å(wù)調(dià o)度ãå·(zhÃ)è¡çæ (tà i)ç£(jiÄn)æ§ãé¯èª¤å ±è¦èé試æ©å¶ã
4. æ¸(shù)æ(jù)èçèå岿¯ææå(wù)層
- åè½ï¼ä½çºæ´åæ¸(shù)æ(jù)è½(zhuÇn)æç³»çµ±(tÇng)çæå(wù)å輸åºï¼çºä¸å±¤æ(yÄ«ng)ç¨æä¾çµ±(tÇng)ä¸çæ¸(shù)æ(jù)èçèåå²è¨ªåæ¥å£ã
- é(guÄn)鵿å(wù)ï¼
- çµ±(tÇng)䏿¥è©¢æå(wù)ï¼æä¾SQLæé¡SQLæ¥å£ï¼èåå°æ¥è©¢ç¿»è¯å¹¶ä¸ç¼(fÄ)å°ç¸æ(yÄ«ng)çç°æ§(gòu)æ¸(shù)æ(jù)庫å·(zhÃ)è¡ï¼è¯(lián)馿¥è©¢ï¼ã
- æ¸(shù)æ(jù)忥æå(wù)ï¼æä¾è¿å¯¦ææå®æçå®å/é忏(shù)æ(jù)忥è½åï¼ä¿æç°æ§(gòu)系統(tÇng)鿏(shù)æ(jù)çæ (tà i)çä¸è´æ§ã
- æ¸(shù)æ(jù)åä»½èæ¸æªæå(wù)ï¼å©ç¨è½(zhuÇn)æééï¼å°å¨ç·æ¸(shù)æ(jù)è½(zhuÇn)ææ ¼å¼ååä»½å°ææ¬æ´ä½çåå²ç³»çµ±(tÇng)ï¼å¦å°è±¡åå²ï¼ã
- ç·©åèå éæå(wù)ï¼å°ç±é»æ¸(shù)æ(jù)è½(zhuÇn)æåå è¼å°é«æ§è½ç·©åï¼å¦Redisï¼ä¸ï¼æ¯ææ(yÄ«ng)ç¨é«é訪åã
ä¸ã é(guÄn)鵿è¡(shù)實ç¾(xià n)è¦é»
- é©é 卿¨¡å¼ï¼Adapter Patternï¼çå»£æ³æ(yÄ«ng)ç¨ï¼çºæ¯ç¨®æ¸(shù)æ(jù)庫éç¼(fÄ)çµ±(tÇng)ä¸ç飿¥ãå æ¸(shù)æ(jù)è®åãæ¸(shù)æ(jù)è®å¯«é©é å¨ï¼æ¯éä½ç³»çµ±(tÇng)è¦å度çé(guÄn)éµã
- ä¸éæ ¼å¼çå©ç¨ï¼å¨å¾©(fù)éè½(zhuÇn)æéä¸ï¼å¯å å°æ¸(shù)æ(jù)æ½åçºä¸ç¨®ä¸éæ ¼å¼ï¼å¦Avro, Parquet, JSONï¼ï¼åé²è¡çµ±(tÇng)ä¸èçï¼ç°¡åè½(zhuÇn)æé輯ã
- åå¸å¼è¨ç®æ¡æ¶éæï¼å°äºè¶ 大è¦(guÄ«)模æ¸(shù)æ(jù)è½(zhuÇn)æï¼å·(zhÃ)è¡å¼æå¯ä»¥èSparkãFlinkçæ¡æ¶éæï¼å©ç¨å ¶åå¸å¼è¨ç®è½åé²è¡å¹¶è¡è½(zhuÇn)æï¼æåååéã
- äºå(wù)èä¸è´æ§ä¿éï¼å°äºè¦æ±å´æ ¼ä¸è´æ§çå ´æ¯ï¼éè¨(shè)è¨åå¸å¼äºå(wù)è£åæ©å¶ï¼å¦Saga模å¼ï¼æç¢ºä¿è½(zhuÇn)æä½æ¥(yè)卿¥(yè)å(wù)ä½å³°æä»¥ååæ§æ¹æ¬¡å·(zhÃ)è¡ã
- å¯è§æ¸¬æ§å»ºè¨(shè)ï¼éæå®åçæ¥å¿ãææ¨ï¼Metricsï¼å追蹤ï¼Tracingï¼ï¼å¯¦æææ¡æ¸(shù)æ(jù)è½(zhuÇn)æçè¡ç·£é(guÄn)ç³»ãæ¸(shù)æ(jù)質(zhì)éææ¨å系統(tÇng)æ§è½çæ (tà i)ã
åã å¯¦è¸æ(yÄ«ng)ç¨å ´æ¯
- æ¸(shù)æ(jù)æ¹/æ¸(shù)æ(jù)å庫æ§(gòu)建ï¼å°åæ£å¨æ¥(yè)å(wù)æ¸(shù)æ(jù)庫ï¼OLTPï¼ä¸ç夿ºç°æ§(gòu)æ¸(shù)æ(jù)ï¼ç¶(jÄ«ng)鿏 æ´è½(zhuÇn)æåï¼éä¸å è¼å°æ¸(shù)æ(jù)æ¹ï¼å¦åºäºHDFS/å°è±¡åå²ï¼æä¼æ¥(yè)æ¸(shù)æ(jù)å庫ï¼å¦Snowflake, BigQueryï¼ä¸ï¼æ¯æåæè決çã
- å¾®æå(wù)æ¶æ§(gòu)ä¸çæ¸(shù)æ(jù)å ±äº«ï¼ä¸åå¾®æå(wù)使ç¨ä¸åçæ¸(shù)æ(jù)庫ï¼å¦è¨å®æå(wù)ç¨MySQLï¼ç¢(chÇn)åç®éç¨MongoDBï¼ï¼é鿏(shù)æ(jù)è½(zhuÇn)æè忥æå(wù)ï¼å¨ä¿èæå(wù)èªæ²»ç滿足跨æå(wù)æ¸(shù)æ(jù)æ¥è©¢éæ±ã
- 系統(tÇng)é·ç§»èåç´ï¼å¨æ¸(shù)æ(jù)åº«çæ¬åç´ææ´ææ¸(shù)æ(jù)庫åçæï¼å¹³æ»å®ææ·å²æ¸(shù)æ(jù)çé·ç§»èè½(zhuÇn)æã
- 夿¨¡æ¸(shù)æ(jù)åº«æ¯æï¼çºæ(yÄ«ng)å°å¾©(fù)鿥(yè)å(wù)é輯ï¼å䏿(yÄ«ng)ç¨å¯è½éè¦åæè¨ªåé(guÄn)ç³»ååææªåæ¸(shù)æ(jù)ï¼è½(zhuÇn)æç³»çµ±(tÇng)坿ä¾éæçæ¸(shù)æ(jù)æ ¼å¼è½(zhuÇn)ææ¯æã
äºã è屿
ç°æ§(gòu)æ¸(shù)æ(jù)庫系統(tÇng)çæ¸(shù)æ(jù)è½(zhuÇn)æä¸å æ¯ç°¡å®çæ¸(shù)æ(jù)æ¬å®¶ï¼èæ¯ä¸åæ¶åæ¸(shù)æ(jù)建模ãèªç¾©çè§£ãå·¥ç¨æçåæå(wù)åè½åçç¶åæ§èª²é¡ãä¸ååª(yÅu)ç§çè¨(shè)è¨è實ç¾(xià n)éè¦å¹³è¡¡éæ´»æ§ãæ§è½ãä¸è´æ§åæç¨æ§ãé¨èäºåçåAIæè¡(shù)çç¼(fÄ)å±ï¼æ¸(shù)æ(jù)è½(zhuÇn)ææ¹æ³å°åç¾(xià n)以ä¸è¶¨å¢ï¼æ´æºè½çå æ¸(shù)æ(jù)ç¼(fÄ)ç¾(xià n)èæ å°æ¨è¦ãåºäºæ¸(shù)æ(jù)æ¹æ ¼å¼ï¼Iceberg, Hudiï¼çå è½(zhuÇn)æçµ±(tÇng)ä¸åå²å±¤ã以åServerlessåã彿§ä¼¸ç¸®çè½(zhuÇn)æå³æå(wù)ï¼TaaSï¼æ¨¡å¼ï¼å¾èé²ä¸æ¥éä½ä¼æ¥(yè)é²è¡æ¸(shù)æ(jù)éæèå¹å¼ææçæè¡(shù)éæª»åéçææ¬ï¼å¤¯å¯¦æ¸(shù)æ(jù)èçèå岿¯ææå(wù)çåºç³ã