เชเชฃเชพ เชฒเซเชเซ เชฐเชฟเชฒเซเชถเชจเชฒ เชกเซเชเชพเชฌเซเชเชฎเชพเช เชกเซเชเชพเชจเซ เชเชพเชขเชตเชพ, เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเชตเชพ เช เชจเซ เชฒเซเชก เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชตเชฟเชถเชฟเชทเซเช เชธเชพเชงเชจเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. เชเชพเชฐเซเชฏเชเชพเชฐเซ เชธเชพเชงเชจเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฒเซเช เชฅเชฏเซเชฒ เชเซ, เชญเซเชฒเซ เชธเซเชงเชพเชฐเซเชฒ เชเซ.
เชญเซเชฒเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชฒเซเชเชฎเชพเช เชฎเชพเชนเชฟเชคเซ เชถเชพเชฎเซเชฒ เชเซ เชเซ เชธเชพเชงเชจ เชเชพเชฐเซเชฏ เชชเซเชฐเซเชฃ เชเชฐเชตเชพเชฎเชพเช เชจเชฟเชทเซเชซเชณ เชเชฏเซเช เช เชจเซ เชเชฏเชพ เชฎเซเชกเซเชฏเซเชฒเซ (เชเชฃเซเชตเชพเชฐ เชเชพเชตเชพ) เชเซเชฏเชพเช เช เชเชเซ เชเชฏเชพ. เชเซเชฒเซเชฒเซ เชฒเซเชเซเชเชฎเชพเช, เชคเชฎเซ เชกเซเชเชพเชฌเซเช เชญเซเชฒ เชถเซเชงเซ เชถเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเซเชทเซเชเช เช เชจเชจเซเชฏ เชเซ เชเชฒเซเชฒเชเชเชจ.
ETL เชญเซเชฒเชจเซ เชฎเชพเชนเชฟเชคเซ เชถเซเช เชญเซเชฎเชฟเชเชพ เชญเชเชตเซ เชเซ เชคเซ เชชเซเชฐเชถเซเชจเชจเซ เชเชตเชพเชฌ เชเชชเชตเชพ เชฎเชพเชเซ, เชฎเซเช เชเซเชฒเซเชฒเชพเช เชฌเซ เชตเชฐเซเชทเซเชฎเชพเช เชเชฆเซเชญเชตเซเชฒเซ เชคเชฎเชพเชฎ เชธเชฎเชธเซเชฏเชพเชเชจเซ เชฌเชฆเชฒเซ เชฎเซเชเชพ เชญเชเชกเชพเชฐเชฎเชพเช เชตเชฐเซเชเซเชเซเชค เชเชฐเซ เชเซ.
เชกเซเชเชพเชฌเซเชเชจเซ เชญเซเชฒเซเชฎเชพเช เชชเซเชฐเชคเซ เชเชเซเชฏเชพ เชจ เชนเซเชตเซ, เชเชจเซเชเซเชถเชจ เชเซเชฎเชพเชตเชตเซเช, เชธเชคเซเชฐ เชนเชเช เชตเชเซเชฐเซเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ.
เชคเชพเชฐเซเชเชฟเช เชญเซเชฒเซเชฎเชพเช เชเซเชฌเชฒ เชเซเชจเซเช เชเชฒเซเชฒเชเชเชจ, เชฌเชฟเชจ-เชฎเชพเชจเซเชฏ เชเชฌเซเชเซเชเซเชเซเชธ, เชเชฌเซเชเซเชเซเชเซเชธเชจเซ เชเชเซเชธเซเชธเชจเซ เช
เชญเชพเชต เชตเชเซเชฐเซเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ.
เชถเซเชกเซเชฏเซเชฒเชฐ เชธเชฎเชฏเชธเชฐ เชถเชฐเซ เชจ เชฅเช เชถเชเซ, เชคเซ เชธเซเชฅเชฟเชฐ เชฅเช เชถเชเซ เชเซ, เชตเชเซเชฐเซ.
เชธเชฐเชณ เชญเซเชฒเซเชจเซ เชธเซเชงเชพเชฐเชตเชพเชฎเชพเช เชฒเชพเชเชฌเซ เชธเชฎเชฏ เชฒเชพเชเชคเซ เชจเชฅเซ. เชเช เชธเชพเชฐเซ ETL เชคเซเชฎเชพเชเชฅเซ เชฎเซเชเชพ เชญเชพเชเชจเชพเชจเซ เชชเซเชคเชพเชจเซ เชเชพเชคเซ เชนเซเชจเซเชกเชฒ เชเชฐเซ เชถเชเซ เชเซ.
เชเชเชฟเชฒ เชฌเชเซเชธ เชกเซเชเชพ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ, เชกเซเชเชพ เชธเซเชคเซเชฐเซเชคเซเชจเซเช เช เชจเซเชตเซเชทเชฃ เชเชฐเชตเชพ เชฎเชพเชเซเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชถเซเชงเชตเชพ เช เชจเซ เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชฌเชจเชพเชตเซ เชเซ. เชเชฃเซเชตเชพเชฐ เชชเชฐเชฟเชตเชฐเซเชคเชจ เชชเชฐเซเชเซเชทเชฃ เช เชจเซ เชเชฎเชพเชตเชเชจเซ เชเชฐเซเชฐเชฟเชฏเชพเชค เชคเชฐเชซ เชฆเซเชฐเซ เชเชพเชฏ เชเซ.
เชคเซเชฅเซ, เช
เชกเชงเซ เชฌเชงเซ เชธเชฎเชธเซเชฏเชพเช เชกเซเชเชพเชฌเซเช เชธเชพเชฅเซ เชธเชเชฌเชเชงเชฟเชค เชเซ. เชฌเชงเซ เชญเซเชฒเซเชฎเชพเชเชฅเซ 48% เชธเชฐเชณ เชญเซเชฒเซ เชเซ.
เชคเชฎเชพเชฎ เชธเชฎเชธเซเชฏเชพเชเชจเซ เชคเซเชฐเซเชเซ เชญเชพเช เชธเซเชเซเชฐเซเช เชฒเซเชเชฟเช เช
เชฅเชตเชพ เชฎเซเชกเชฒ เชฌเชฆเชฒเชตเชพเชฅเซ เชธเชเชฌเชเชงเชฟเชค เชเซ, เชเชฎเชพเชเชจเซ เช
เชกเชงเชพเชฅเซ เชตเชงเซ เชญเซเชฒเซ เชเชเชฟเชฒ เชเซ.
เช เชจเซ เชคเชฎเชพเชฎ เชธเชฎเชธเซเชฏเชพเชเชจเชพ เชเช เชเซเชตเชพเชฐเซเชเชฐ เชเชฐเชคเชพ เชชเชฃ เชเชเชพ เชเชพเชฐเซเชฏ เชถเซเชกเซเชฏเซเชฒเชฐเชฅเซ เชธเชเชฌเชเชงเชฟเชค เชเซ, เชเซเชฎเชพเชเชฅเซ 18% เชธเชฐเชณ เชญเซเชฒเซ เชเซ.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, เชฌเชจเชคเซ เชคเชฎเชพเชฎ เชญเซเชฒเซเชฎเชพเชเชฅเซ 22% เชเชเชฟเชฒ เชนเซเชฏ เชเซ, เช เชจเซ เชคเซเชฎเชจเชพ เชธเซเชงเชพเชฐเชฃเชพ เชฎเชพเชเซ เชธเซเชฅเซ เชตเชงเซ เชงเซเชฏเชพเชจ เช เชจเซ เชธเชฎเชฏเชจเซ เชเชฐเซเชฐ เชนเซเชฏ เชเซ. เชคเซเช เช เช เชตเชพเชกเชฟเชฏเชพเชฎเชพเช เชฒเชเชญเช เชเช เชตเชพเชฐ เชฅเชพเชฏ เชเซ. เชเซเชฏเชพเชฐเซ เชธเชพเชฎเชพเชจเซเชฏ เชญเซเชฒเซ เชฒเชเชญเช เชฆเชฐเชฐเซเช เชฅเชพเชฏ เชเซ.
เชฆเซเชเซเชคเซ เชฐเซเชคเซ, ETL เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซเช เชฎเซเชจเชฟเชเชฐเชฟเชเช เช เชธเชฐเชเชพเชฐเช เชฐเชนเซเชถเซ เชเซเชฏเชพเชฐเซ เชฒเซเชเชฎเชพเช เชถเชเซเชฏ เชคเซเชเชฒเซ เชธเชเซเช เชฐเซเชคเซ เชญเซเชฒเชจเซเช เชธเซเชฅเชพเชจ เชธเซเชเชตเชตเชพเชฎเชพเช เชเชตเซ เช เชจเซ เชธเชฎเชธเซเชฏเชพเชจเชพ เชธเซเชคเซเชฐเซเชคเชจเซ เชถเซเชงเชตเชพ เชฎเชพเชเซ เชจเซเชฏเซเชจเชคเชฎ เชธเชฎเชฏเชจเซ เชเชฐเซเชฐ เชนเซเชฏ.
เช เชธเชฐเชเชพเชฐเช เชฆเซเชเชฐเซเช
ETL เชฎเซเชจเชฟเชเชฐเชฟเชเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เชนเซเช เชถเซเช เชเซเชตเชพ เชฎเชพเชเชเชคเซ เชนเชคเซ?
เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ - เชเซเชฏเชพเชฐเซ เชคเซเชฃเซ เชเชพเชฎ เชถเชฐเซ เชเชฐเซเชฏเซเช,
เชธเซเชคเซเชฐเซเชค - เชฎเชพเชนเชฟเชคเซ เชธเซเชคเซเชฐเซเชค,
เชธเซเชคเชฐ - เชธเซเชเซเชฐเซเชเชจเซเช เชเชฏเซเช เชธเซเชคเชฐ เชฒเซเชก เชฅเช เชฐเชนเซเชฏเซเช เชเซ,
ETL เชเซเชฌเชจเซเช เชจเชพเชฎ - เช
เชชเชฒเซเชก เชชเซเชฐเชเซเชฐเชฟเชฏเชพ, เชเซเชฎเชพเช เชเชฃเชพ เชจเชพเชจเชพ เชชเชเชฒเชพเชเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ,
เชธเซเชเซเชช เชจเชเชฌเชฐ - เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชฐเชนเซเชฒเชพ เชชเชเชฒเชพเชจเซ เชธเชเชเซเชฏเชพ,
เช
เชธเชฐเชเซเชฐเชธเซเชค เชชเชเชเซเชคเชฟเช - เชเซเชเชฒเชพ เชกเซเชเชพ เชชเชฐ เชชเชนเซเชฒเชพเชฅเซ เช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ,
เช
เชตเชงเชฟ เชธเซเชเชจเซเชก - เชคเซ เชเซเชเชฒเซ เชธเชฎเชฏ เชฒเซ เชเซ,
เชธเซเชฅเชฟเชคเชฟ - เชฌเชงเซเช เชธเชพเชฐเซเช เชเซ เชเซ เชจเชนเซเช: เช เซเช เชเซ, เชญเซเชฒ, เชเชพเชฒเซ เชฐเชนเซ เชเซ, เชนเซเชเชเซเชธ
เชธเชเชฆเซเชถ - เชเซเชฒเซเชฒเซ เชธเชซเชณ เชธเชเชฆเซเชถ เช
เชฅเชตเชพ เชญเซเชฒ เชตเชฐเซเชฃเชจ.
เชเชจเซเชเซเชฐเซเชเชจเซ เชธเซเชฅเชฟเชคเชฟเชจเชพ เชเชงเชพเชฐเซ, เชคเชฎเซ เชเชฎเซเชเชฒ เชฎเซเชเชฒเซ เชถเชเซ เชเซ. เช เชจเซเชฏ เชธเชญเซเชฏเซเชจเซ เชชเชคเซเชฐ. เชเซ เชคเซเชฏเชพเช เชเซเช เชญเซเชฒเซ เชจเชฅเซ, เชคเซ เชชเชเซ เชชเชคเซเชฐ เชเชฐเซเชฐเซ เชจเชฅเซ.
เชเชฎ, เชญเซเชฒเชจเซ เชเชเชจเชพเชฎเชพเช, เชเชเชจเชพเชจเซเช เชธเซเชฅเชพเชจ เชธเซเชชเชทเซเชเชชเชฃเซ เชธเซเชเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเซเชฏเชพเชฐเซเช เชเชตเซเช เชฌเชจเซ เชเซ เชเซ เชฎเซเชจเชฟเชเชฐเชฟเชเช เชเซเชฒ เชชเซเชคเซ เชเชพเชฎ เชเชฐเชคเซเช เชจเชฅเซ. เช เชเชฟเชธเซเชธเชพเชฎเชพเช, เชกเซเชเชพเชฌเซเชเชฎเชพเช เชธเซเชงเชพ เช เชตเซเชฏเซ (เชตเซเชฏเซ) เชเซเชฒ เชเชฐเชตเชพเชจเซเช เชถเชเซเชฏ เชเซ, เชเซเชจเชพ เชเชงเชพเชฐเซ เชฐเชฟเชชเซเชฐเซเช เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชเซ.
ETL เชฎเซเชจเชฟเชเชฐเชฟเชเช เชเซเชฌเชฒ
ETL เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชฆเซเชเชฐเซเชเชจเซ เช เชฎเชฒเชฎเชพเช เชฎเซเชเชตเชพ เชฎเชพเชเซ, เชเช เชเซเชฌเชฒ เช เชจเซ เชเช เชฆเซเชถเซเชฏ เชชเซเชฐเชคเซเช เชเซ.
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเซ เชชเชฐ เชชเชพเชเชพ เชเชตเซ เชถเชเซ เชเซ
DDL เชเซเชทเซเชเชเซ
CREATE TABLE UTL_JOB_STATUS (
/* Table for logging of job execution log. Important that the job has the steps ETL_START and ETL_END or ETL_ERROR */
UTL_JOB_STATUS_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
SID INTEGER NOT NULL DEFAULT -1, /* Session Identificator. Unique for every Run of job */
LOG_DT INTEGER NOT NULL DEFAULT 0, /* Date time */
LOG_D INTEGER NOT NULL DEFAULT 0, /* Date */
JOB_NAME TEXT NOT NULL DEFAULT 'N/A', /* Job name like JOB_STG2DM_GEO */
STEP_NAME TEXT NOT NULL DEFAULT 'N/A', /* ETL_START, ... , ETL_END/ETL_ERROR */
STEP_DESCR TEXT, /* Description of task or error message */
UNIQUE (SID, JOB_NAME, STEP_NAME)
);
INSERT INTO UTL_JOB_STATUS (UTL_JOB_STATUS_ID) VALUES (-1);
DDL เชเซเช/เชฐเชฟเชชเซเชฐเซเช เชเชฐเซ
CREATE VIEW IF NOT EXISTS UTL_JOB_STATUS_V
AS /* Content: Package Execution Log for last 3 Months. */
WITH SRC AS (
SELECT LOG_D,
LOG_DT,
UTL_JOB_STATUS_ID,
SID,
CASE WHEN INSTR(JOB_NAME, 'FTP') THEN 'TRANSFER' /* file transfer */
WHEN INSTR(JOB_NAME, 'STG') THEN 'STAGE' /* stage */
WHEN INSTR(JOB_NAME, 'CLS') THEN 'CLEANSING' /* cleansing */
WHEN INSTR(JOB_NAME, 'DIM') THEN 'DIMENSION' /* dimension */
WHEN INSTR(JOB_NAME, 'FCT') THEN 'FACT' /* fact */
WHEN INSTR(JOB_NAME, 'ETL') THEN 'STAGE-MART' /* data mart */
WHEN INSTR(JOB_NAME, 'RPT') THEN 'REPORT' /* report */
ELSE 'N/A' END AS LAYER,
CASE WHEN INSTR(JOB_NAME, 'ACCESS') THEN 'ACCESS LOG' /* source */
WHEN INSTR(JOB_NAME, 'MASTER') THEN 'MASTER DATA' /* source */
WHEN INSTR(JOB_NAME, 'AD-HOC') THEN 'AD-HOC' /* source */
ELSE 'N/A' END AS SOURCE,
JOB_NAME,
STEP_NAME,
CASE WHEN STEP_NAME='ETL_START' THEN 1 ELSE 0 END AS START_FLAG,
CASE WHEN STEP_NAME='ETL_END' THEN 1 ELSE 0 END AS END_FLAG,
CASE WHEN STEP_NAME='ETL_ERROR' THEN 1 ELSE 0 END AS ERROR_FLAG,
STEP_NAME || ' : ' || STEP_DESCR AS STEP_LOG,
SUBSTR( SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), 1, INSTR(SUBSTR(STEP_DESCR, INSTR(STEP_DESCR, '***')+4), '***')-2 ) AS AFFECTED_ROWS
FROM UTL_JOB_STATUS
WHERE datetime(LOG_D, 'unixepoch') >= date('now', 'start of month', '-3 month')
)
SELECT JB.SID,
JB.MIN_LOG_DT AS START_DT,
strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) AS LOG_DT,
JB.SOURCE,
JB.LAYER,
JB.JOB_NAME,
CASE
WHEN JB.ERROR_FLAG = 1 THEN 'ERROR'
WHEN JB.ERROR_FLAG = 0 AND JB.END_FLAG = 0 AND strftime('%s','now') - JB.MIN_LOG_DT > 0.5*60*60 THEN 'HANGS' /* half an hour */
WHEN JB.ERROR_FLAG = 0 AND JB.END_FLAG = 0 THEN 'RUNNING'
ELSE 'OK'
END AS STATUS,
ERR.STEP_LOG AS STEP_LOG,
JB.CNT AS STEP_CNT,
JB.AFFECTED_ROWS AS AFFECTED_ROWS,
strftime('%d.%m.%Y %H:%M', datetime(JB.MIN_LOG_DT, 'unixepoch')) AS JOB_START_DT,
strftime('%d.%m.%Y %H:%M', datetime(JB.MAX_LOG_DT, 'unixepoch')) AS JOB_END_DT,
JB.MAX_LOG_DT - JB.MIN_LOG_DT AS JOB_DURATION_SEC
FROM
( SELECT SID, SOURCE, LAYER, JOB_NAME,
MAX(UTL_JOB_STATUS_ID) AS UTL_JOB_STATUS_ID,
MAX(START_FLAG) AS START_FLAG,
MAX(END_FLAG) AS END_FLAG,
MAX(ERROR_FLAG) AS ERROR_FLAG,
MIN(LOG_DT) AS MIN_LOG_DT,
MAX(LOG_DT) AS MAX_LOG_DT,
SUM(1) AS CNT,
SUM(IFNULL(AFFECTED_ROWS, 0)) AS AFFECTED_ROWS
FROM SRC
GROUP BY SID, SOURCE, LAYER, JOB_NAME
) JB,
( SELECT UTL_JOB_STATUS_ID, SID, JOB_NAME, STEP_LOG
FROM SRC
WHERE 1 = 1
) ERR
WHERE 1 = 1
AND JB.SID = ERR.SID
AND JB.JOB_NAME = ERR.JOB_NAME
AND JB.UTL_JOB_STATUS_ID = ERR.UTL_JOB_STATUS_ID
ORDER BY JB.MIN_LOG_DT DESC, JB.SID DESC, JB.SOURCE;
SQL เชคเชชเชพเชธเซ เชฐเชนเซเชฏเซเช เชเซ เชเซ เชจเชตเซ เชธเชคเซเชฐ เชจเชเชฌเชฐ เชฎเซเชณเชตเชตเซ เชถเชเซเชฏ เชเซ เชเซ เชเซเชฎ
SELECT SUM (
CASE WHEN start_job.JOB_NAME IS NOT NULL AND end_job.JOB_NAME IS NULL /* existed job finished */
AND NOT ( 'y' = 'n' ) /* force restart PARAMETER */
THEN 1 ELSE 0
END ) AS IS_RUNNING
FROM
( SELECT 1 AS dummy FROM UTL_JOB_STATUS WHERE sid = -1) d_job
LEFT OUTER JOIN
( SELECT JOB_NAME, SID, 1 AS dummy
FROM UTL_JOB_STATUS
WHERE JOB_NAME = 'RPT_ACCESS_LOG' /* job name PARAMETER */
AND STEP_NAME = 'ETL_START'
GROUP BY JOB_NAME, SID
) start_job /* starts */
ON d_job.dummy = start_job.dummy
LEFT OUTER JOIN
( SELECT JOB_NAME, SID
FROM UTL_JOB_STATUS
WHERE JOB_NAME = 'RPT_ACCESS_LOG' /* job name PARAMETER */
AND STEP_NAME in ('ETL_END', 'ETL_ERROR') /* stop status */
GROUP BY JOB_NAME, SID
) end_job /* ends */
ON start_job.JOB_NAME = end_job.JOB_NAME
AND start_job.SID = end_job.SID
เชเซเชทเซเชเช เชธเซเชตเชฟเชงเชพเช:
- เชกเซเชเชพ เชชเซเชฐเซเชธเซเชธเชฟเชเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชถเชฐเซเชเชค เช เชจเซ เช เชเชค ETL_START เช เชจเซ ETL_END เชชเชเชฒเชพเชเช เชฆเซเชตเชพเชฐเชพ เช เชจเซเชธเชฐเชตเชพเชฎเชพเช เชเชตเชถเซเชฏเช เชเซ
- เชญเซเชฒเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชคเซเชจเชพ เชตเชฐเซเชฃเชจ เชธเชพเชฅเซเชจเซเช ETL_ERROR เชชเชเชฒเซเช เชฌเชจเชพเชตเชตเซเช เชเซเชเช
- เชชเซเชฐเซเชธเซเชธเซเชก เชกเซเชเชพเชจเซ เชเชฅเซเชฅเซ เชนเชพเชเชฒเชพเชเช เชฅเชตเซ เชเซเชเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชซเซเชฆเชกเซ เชธเชพเชฅเซ
- เชคเซ เช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ force_restart=y เชชเชฐเชฟเชฎเชพเชฃ เชธเชพเชฅเซ เชเช เช เชธเชฎเชฏเซ เชถเชฐเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ, เชคเซเชจเชพ เชตเชฟเชจเชพ เชธเชคเซเชฐ เชจเชเชฌเชฐ เชซเชเซเชค เชชเซเชฐเซเชฃ เชฅเชฏเซเชฒ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เช เชเชชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
- เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช, เชคเชฎเซ เชธเชฎเชพเชจ เชกเซเชเชพ เชชเซเชฐเซเชธเซเชธเชฟเชเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชธเชฎเชพเชเชคเชฐ เชฐเซเชคเซ เชเชฒเชพเชตเซ เชถเชเชคเชพ เชจเชฅเซ
เชเซเชทเซเชเช เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเชพเชฎเชเซเชฐเซ เชจเซเชเซ เชฎเซเชเชฌ เชเซ:
- เชเชพเชฒเซ เชฐเชนเซเชฒ ETL เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชธเชคเซเชฐ เชจเชเชฌเชฐ เชฎเซเชณเชตเชตเซ
- เชเซเชทเซเชเชเชฎเชพเช เชฒเซเช เชเชจเซเชเซเชฐเซ เชฆเชพเชเชฒ เชเชฐเซ
- ETL เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชเซเชฒเซเชฒเซ เชธเชซเชณ เชฐเซเชเซเชฐเซเชก เชฎเซเชณเชตเชตเซ
เชเชฐเซเชเชฒ เช
เชฅเชตเชพ เชชเซเชธเซเชเชเซเชฐเซเชธ เชเซเชตเชพ เชกเซเชเชพเชฌเซเชเชฎเชพเช, เช เชเชพเชฎเชเซเชฐเซ เชฌเชฟเชฒเซเช-เชเชจ เชซเชเชเซเชถเชจเซเชธ เชคเชฐเซเชเซ เช
เชฎเชฒเชฎเชพเช เชฎเซเชเซ เชถเชเชพเชฏ เชเซ. sqlite เชจเซ เชฌเชพเชนเซเชฏ เชฎเชฟเชเซเชจเชฟเชเชฎเชจเซ เชเชฐเซเชฐ เชเซ, เช
เชจเซ เช เชเชฟเชธเซเชธเชพเชฎเชพเช เชคเซ
เชจเชฟเชทเซเชเชฐเซเชท
เชเชฎ, เชกเซเชเชพ เชชเซเชฐเซเชธเซเชธเชฟเชเช เชเซเชฒเซเชธเชฎเชพเช เชญเซเชฒ เชธเชเชฆเซเชถเชพเช เชฎเซเชเชพ-เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชญเซเชฎเชฟเชเชพ เชญเชเชตเซ เชเซ. เชชเชฐเชเชคเซ เชธเชฎเชธเซเชฏเชพเชจเซเช เชเชพเชฐเชฃ เชเชกเชชเชฅเซ เชถเซเชงเชตเชพ เชฎเชพเชเซ เชคเซเชฎเชจเซ เชถเซเชฐเซเชทเซเช เชเชนเซเชตเซเช เชฎเซเชถเซเชเซเชฒ เชเซ. เชเซเชฏเชพเชฐเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชธเชเชเซเชฏเชพ เชธเซ เชธเซเชงเซ เชชเชนเซเชเชเซ เชเซ, เชคเซเชฏเชพเชฐเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชฎเซเชจเชฟเชเชฐเชฟเชเช เชเช เชเชเชฟเชฒ เชชเซเชฐเซเชเซเชเซเชเชฎเชพเช เชซเซเชฐเชตเชพเชฏ เชเซ.
เชฒเซเช เชชเซเชฐเซเชเซเชเชพเชเชชเชจเชพ เชฐเซเชชเชฎเชพเช เชธเชฎเชธเซเชฏเชพเชจเชพ เชธเชเชญเชตเชฟเชค เชเชเซเชฒเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชชเซเชฐเซเช เชชเชพเชกเซ เชเซ. เชเชเซ เชจเชพเชจเซ เชฐเซเชชเซเชเซเชเชฐเซ เชชเซเชฐเซเชเซเชเชพเชเชช เชเชฟเชเชฒเซเชฌเชฎเชพเช เชเชชเชฒเชฌเซเชง เชเซ
เชธเซเชฐเซเชธ: www.habr.com