Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Ua kōkua ʻo Webalizer a me Google Analytics iaʻu e ʻike i nā mea e hana nei ma nā pūnaewele no nā makahiki he nui. I kēia manawa ua maopopo iaʻu ua hāʻawi lākou i ka ʻike pono liʻiliʻi loa. I ka loaʻa ʻana o kāu faila access.log, maʻalahi loa ka hoʻomaopopo ʻana i nā helu a me ka hoʻokō ʻana i nā mea hana maʻamau, e like me ka sqlite, html, ka ʻōlelo sql a me nā ʻōlelo hoʻolālā palapala.

ʻO ke kumu ʻikepili no Webalizer ka waihona access.log file. ʻO kēia ke ʻano o kona mau kaola a me nā helu, kahi i maopopo ai ka nui o nā kaʻa.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī
Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī
ʻO nā mea hana e like me Google Analytics e hōʻiliʻili i ka ʻikepili mai ka ʻaoʻao i hoʻouka ʻia. Hōʻike lākou iā mākou i ʻelua mau kiʻi a me nā laina, e pili ana i ka mea paʻakikī ke huki i nā hopena pololei. Malia paha i hoʻoikaika nui ʻia? ʻaʻole maopopo.

No laila, he aha kaʻu i makemake ai e ʻike ma ka helu helu malihini kipa pūnaewele?

Mea hoʻohana a me ke kālepa bot

Hoʻohana pinepine ʻia nā kaʻa pūnaewele a pono e ʻike i ka nui o nā kaʻa e hoʻohana ʻia nei. No ka laʻana, e like me kēia:

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Nīnau hōʻike SQL

SELECT
1 as 'StackedArea: Traffic generated by Users and Bots',
strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day',
SUM(CASE WHEN USG.AGENT_BOT!='n.a.' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Bots, KB',
SUM(CASE WHEN USG.AGENT_BOT='n.a.' THEN FCT.BYTES ELSE 0 END)/1000 AS 'Users, KB'
FROM
  FCT_ACCESS_USER_AGENT_DD FCT,
  DIM_USER_AGENT USG
WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT

Hōʻike ka pakuhi i ka hana mau o nā bots. He mea hoihoi ia ke aʻo kikoʻī i nā ʻelele ikaika loa.

Nā bots hoʻonāukiuki

Hoʻokaʻawale mākou i nā bots ma muli o ka ʻike mea hoʻohana. ʻO nā helu helu hou e pili ana i ke kaʻa i kēlā me kēia lā, ka nui o nā noi kūleʻa a kūleʻa ʻole e hāʻawi i kahi manaʻo maikaʻi o ka hana bot.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Nīnau hōʻike SQL

SELECT 
1 AS 'Table: Annoying Bots',
MAX(USG.AGENT_BOT) AS 'Bot',
ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day',
ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day',
ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Client Error', 'Server Error') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Error Requests per Day',
ROUND(SUM(CASE WHEN STS.STATUS_GROUP IN ('Successful', 'Redirection') THEN FCT.REQUEST_CNT / 14.0 ELSE 0 END), 1) AS 'Success Requests per Day',
USG.USER_AGENT_NK AS 'Agent'
FROM FCT_ACCESS_USER_AGENT_DD FCT,
     DIM_USER_AGENT USG,
     DIM_HTTP_STATUS STS
WHERE FCT.DIM_USER_AGENT_ID = USG.DIM_USER_AGENT_ID
  AND FCT.DIM_HTTP_STATUS_ID = STS.DIM_HTTP_STATUS_ID
  AND USG.AGENT_BOT != 'n.a.'
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY USG.USER_AGENT_NK
ORDER BY 3 DESC
LIMIT 10

I kēia hihia, ʻo ka hopena o ka loiloi ka hoʻoholo ʻana e kaupalena i ke komo ʻana i ka pūnaewele ma ka hoʻohui ʻana i ka faila robots.txt.

User-agent: AhrefsBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: bingbot
Crawl-delay: 5

Ua nalowale nā ​​bots ʻelua mai ka papaʻaina, a ua neʻe nā robots MS mai nā laina mua.

ʻO ka lā a me ka manawa o ka hana nui loa

ʻIke ʻia nā piʻi ʻana i ke kaʻa. No ka hoʻopaʻa ʻana iā lākou i nā kikoʻī, pono e hōʻike i ka manawa o ko lākou hanana ʻana, ʻaʻole pono e hōʻike i nā hola a me nā lā o ke ana manawa. E maʻalahi kēia i ka loaʻa ʻana o nā noi pilikino i ka faila log inā pono ka ʻike kikoʻī.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Nīnau hōʻike SQL

SELECT
1 AS 'Line: Day and Hour of Hits from Users and Bots',
strftime('%d.%m-%H', datetime(EVENT_DT, 'unixepoch')) AS 'Date Time',
HIB AS 'Bots, Hits',
HIU AS 'Users, Hits'
FROM (
	SELECT
	EVENT_DT,
	SUM(CASE WHEN AGENT_BOT!='n.a.' THEN LINE_CNT ELSE 0 END) AS HIB,
	SUM(CASE WHEN AGENT_BOT='n.a.' THEN LINE_CNT ELSE 0 END) AS HIU
	FROM FCT_ACCESS_REQUEST_REF_HH
	WHERE datetime(EVENT_DT, 'unixepoch') >= date('now', '-14 day')
	GROUP BY EVENT_DT
	ORDER BY SUM(LINE_CNT) DESC
	LIMIT 10
) ORDER BY EVENT_DT

Nānā mākou i nā hola ʻoi loa 11, 14 a me 20 o ka lā mua ma ka pakuhi. Akā i kekahi lā aʻe i ka hola 13:XNUMX ua ʻeleu nā bots.

ʻAwelika o nā hana hoʻohana i kēlā me kēia lā ma ka pule

Hoʻokaʻawale iki mākou i nā mea me ka hana a me ke kaʻa. ʻO ka nīnau aʻe ka hana a nā mea hoʻohana ponoʻī. No ia mau helu helu, makemake ʻia nā manawa hoʻohui lōʻihi, e like me hoʻokahi pule.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Nīnau hōʻike SQL

SELECT
1 as 'Line: Average Daily User Activity by Week',
strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Week',
ROUND(1.0*SUM(FCT.PAGE_CNT)/SUM(FCT.IP_CNT),1) AS 'Pages per IP per Day',
ROUND(1.0*SUM(FCT.FILE_CNT)/SUM(FCT.IP_CNT),1) AS 'Files per IP per Day'
FROM
  FCT_ACCESS_USER_AGENT_DD FCT,
  DIM_USER_AGENT USG,
  DIM_HTTP_STATUS HST
WHERE FCT.DIM_USER_AGENT_ID=USG.DIM_USER_AGENT_ID
  AND FCT.DIM_HTTP_STATUS_ID = HST.DIM_HTTP_STATUS_ID
  AND USG.AGENT_BOT='n.a.' /* users only */
  AND HST.STATUS_GROUP IN ('Successful') /* good pages */
  AND datetime(FCT.EVENT_DT, 'unixepoch') > date('now', '-3 month')
GROUP BY strftime('%W week', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT

Hōʻike nā helu helu pule ma ka awelika hoʻokahi mea hoʻohana e wehe i nā ʻaoʻao 1,6 i kēlā me kēia lā. ʻO ka helu o nā faila i noi ʻia i kēlā me kēia mea hoʻohana i kēia hihia e pili ana i ka hoʻohui ʻana o nā faila hou i ka pūnaewele.

ʻO nā noi āpau a me kā lākou mau kūlana

Hōʻike mau ʻo Webalizer i nā code ʻaoʻao kikoʻī a makemake mau wau e ʻike i ka helu o nā noi kūleʻa a me nā hewa.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Nīnau hōʻike SQL

SELECT
1 as 'Line: All Requests by Status',
strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch')) AS 'Day',
SUM(CASE WHEN STS.STATUS_GROUP='Successful' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Success',
SUM(CASE WHEN STS.STATUS_GROUP='Redirection' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Redirect',
SUM(CASE WHEN STS.STATUS_GROUP='Client Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Customer Error',
SUM(CASE WHEN STS.STATUS_GROUP='Server Error' THEN FCT.REQUEST_CNT ELSE 0 END) AS 'Server Error'
FROM
  FCT_ACCESS_USER_AGENT_DD FCT,
  DIM_HTTP_STATUS STS
WHERE FCT.DIM_HTTP_STATUS_ID=STS.DIM_HTTP_STATUS_ID
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY strftime('%d.%m', datetime(FCT.EVENT_DT, 'unixepoch'))
ORDER BY FCT.EVENT_DT

Hōʻike ka hōʻike i nā noi, ʻaʻole nā ​​kaomi (paʻi), ʻaʻole like me LINE_CNT, helu ʻia ka metric REQUEST_CNT ma ke ʻano he COUNT(DISTINCT STG.REQUEST_NK). ʻO ka pahuhopu e hōʻike i nā hanana kūpono, no ka laʻana, koho nā bots MS i ka faila robots.txt i mau haneli mau manawa i ka lā a, i kēia hihia, e helu ʻia kēlā mau koho i hoʻokahi manawa. Hiki iā ʻoe ke hoʻomaʻemaʻe i nā lele ma ka pakuhi.

Mai ka pakuhi hiki iā ʻoe ke ʻike i nā hewa he nui - he mau ʻaoʻao ʻaʻole kēia. ʻO ka hopena o ka nānā ʻana ʻo ia ka hoʻohui ʻana i nā hoʻihoʻi ʻana mai nā ʻaoʻao mamao.

Nā noi ʻino

No ka nānā pono ʻana i nā noi, hiki iā ʻoe ke hōʻike i nā ʻikepili kikoʻī.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Nīnau hōʻike SQL

SELECT
  1 AS 'Table: Top Error Requests',
  REQ.REQUEST_NK AS 'Request',
  'Error' AS 'Request Status',
  ROUND(SUM(FCT.LINE_CNT) / 14.0, 1) AS 'Hits per Day',
  ROUND(SUM(FCT.IP_CNT) / 14.0, 1) AS 'IPs per Day',
  ROUND(SUM(FCT.BYTES)/1000 / 14.0, 1) AS 'KB per Day'
FROM
  FCT_ACCESS_REQUEST_REF_HH FCT,
  DIM_REQUEST_V_ACT REQ
WHERE FCT.DIM_REQUEST_ID = REQ.DIM_REQUEST_ID
  AND FCT.STATUS_GROUP IN ('Client Error', 'Server Error')
  AND datetime(FCT.EVENT_DT, 'unixepoch') >= date('now', '-14 day')
GROUP BY REQ.REQUEST_NK
ORDER BY 4 DESC
LIMIT 20

E loaʻa pū i kēia papa inoa nā kelepona a pau, no ka laʻana, kahi noi i /wp-login.php Ma ka hoʻoponopono ʻana i nā lula no ke kākau hou ʻana i nā noi a ke kikowaena, hiki iā ʻoe ke hoʻololi i ka pane a ke kikowaena i kēlā mau noi a hoʻouna iā lākou i ka ʻaoʻao hoʻomaka.

No laila, hāʻawi kekahi mau hōʻike maʻalahi e pili ana i ka faila log server i kahi kiʻi piha piha o nā mea e hana nei ma ka pūnaewele.

Pehea e loaʻa ai ka ʻike?

Ua lawa ka waihona sqlite. E hana mākou i nā papa: kōkua no ka hoʻopaʻa inoa ʻana i nā kaʻina hana ETL.

Nā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Papa papa kahi e kākau ai mākou i nā faila log me PHP. ʻElua papaʻaina hui. E hana kākou i papaʻaina i kēlā me kēia lā me nā ʻikepili no nā mea hoʻohana a noi i nā kūlana. I kēlā me kēia hola me nā helu no nā noi, nā pūʻulu kūlana a me nā ʻelele. ʻEhā papa o nā ana kūpono.

ʻO ka hopena ke kumu hoʻohālike pili:

Kükohu ikepiliNā helu helu pūnaewele a me kāu waihona liʻiliʻi ponoʻī

Script e hana i kahi mea i loko o kahi waihona sqlite:

Hana ʻia mea DDL

DROP TABLE IF EXISTS DIM_USER_AGENT;
CREATE TABLE DIM_USER_AGENT (
  DIM_USER_AGENT_ID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  USER_AGENT_NK     TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_OS          TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_ENGINE      TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_DEVICE      TEXT NOT NULL DEFAULT 'n.a.',
  AGENT_BOT         TEXT NOT NULL DEFAULT 'n.a.',
  UPDATE_DT         INTEGER NOT NULL DEFAULT 0,
  UNIQUE (USER_AGENT_NK)
);
INSERT INTO DIM_USER_AGENT (DIM_USER_AGENT_ID) VALUES (-1);

Ke kahua

I ka hihia o ka waihona access.log, pono e heluhelu, e hoʻopaʻa a kākau i nā noi āpau i ka waihona. Hiki ke hana ʻia kēia me ka hoʻohana ʻana i ka ʻōlelo kākau a i ʻole ka hoʻohana ʻana i nā mea hana sqlite.

Hōʻano waihona moʻo:

//67.221.59.195 - - [28/Dec/2012:01:47:47 +0100] "GET /files/default.css HTTP/1.1" 200 1512 "https://project.edu/" "Mozilla/4.0"
//host ident auth time method request_nk protocol status bytes ref browser
$log_pattern = '/^([^ ]+) ([^ ]+) ([^ ]+) ([[^]]+]) "(.*) (.*) (.*)" ([0-9-]+) ([0-9-]+) "(.*)" "(.*)"$/';

Hoʻolaha kī

Aia ka ʻikepili maka i ka waihona, pono ʻoe e kākau i nā kī ʻaʻole i laila i loko o nā papa ana. A laila hiki ke kūkulu i kahi kuhikuhi i nā ana. No ka laʻana, ma ka papa DIM_REFERRER, ʻo ke kī he hui o ʻekolu mau kahua.

Nīnau hoʻolaha kī SQL

/* Propagate the referrer from access log */
INSERT INTO DIM_REFERRER (HOST_NK, PATH_NK, QUERY_NK, UPDATE_DT)
SELECT
	CLS.HOST_NK,
	CLS.PATH_NK,
	CLS.QUERY_NK,
	STRFTIME('%s','now') AS UPDATE_DT
FROM (
	SELECT DISTINCT
	REFERRER_HOST AS HOST_NK,
	REFERRER_PATH AS PATH_NK,
	CASE WHEN INSTR(REFERRER_QUERY,'&sid')>0 THEN SUBSTR(REFERRER_QUERY, 1, INSTR(REFERRER_QUERY,'&sid')-1) /* отрезаем sid - специфика цмс */
	ELSE REFERRER_QUERY END AS QUERY_NK
	FROM STG_ACCESS_LOG
) CLS
LEFT OUTER JOIN DIM_REFERRER TRG
ON (CLS.HOST_NK = TRG.HOST_NK AND CLS.PATH_NK = TRG.PATH_NK AND CLS.QUERY_NK = TRG.QUERY_NK)
WHERE TRG.DIM_REFERRER_ID IS NULL

Hiki i ka hoʻolaha ʻana i ka papa ʻaina mea hoʻohana ke loaʻa i ka logic bot, no ka laʻana ka sql snippet:


CASE
WHEN INSTR(LOWER(CLS.BROWSER),'yandex.com')>0
	THEN 'yandex'
WHEN INSTR(LOWER(CLS.BROWSER),'googlebot')>0
	THEN 'google'
WHEN INSTR(LOWER(CLS.BROWSER),'bingbot')>0
	THEN 'microsoft'
WHEN INSTR(LOWER(CLS.BROWSER),'ahrefsbot')>0
	THEN 'ahrefs'
WHEN INSTR(LOWER(CLS.BROWSER),'mj12bot')>0
	THEN 'majestic-12'
WHEN INSTR(LOWER(CLS.BROWSER),'compatible')>0 OR INSTR(LOWER(CLS.BROWSER),'http')>0
	OR INSTR(LOWER(CLS.BROWSER),'libwww')>0 OR INSTR(LOWER(CLS.BROWSER),'spider')>0
	OR INSTR(LOWER(CLS.BROWSER),'java')>0 OR INSTR(LOWER(CLS.BROWSER),'python')>0
	OR INSTR(LOWER(CLS.BROWSER),'robot')>0 OR INSTR(LOWER(CLS.BROWSER),'curl')>0
	OR INSTR(LOWER(CLS.BROWSER),'wget')>0
	THEN 'other'
ELSE 'n.a.' END AS AGENT_BOT

Nā papa hōʻuluʻulu

ʻO ka mea hope loa, e hoʻouka mākou i nā papa aggregate; no ka laʻana, hiki ke hoʻouka ʻia ka pākaukau o kēlā me kēia lā penei:

Nīnau SQL no ka hoʻouka ʻana i ka hui

/* Load fact from access log */
INSERT INTO FCT_ACCESS_USER_AGENT_DD (EVENT_DT, DIM_USER_AGENT_ID, DIM_HTTP_STATUS_ID, PAGE_CNT, FILE_CNT, REQUEST_CNT, LINE_CNT, IP_CNT, BYTES)
WITH STG AS (
SELECT
	STRFTIME( '%s', SUBSTR(TIME_NK,9,4) || '-' ||
	CASE SUBSTR(TIME_NK,5,3)
	WHEN 'Jan' THEN '01' WHEN 'Feb' THEN '02' WHEN 'Mar' THEN '03' WHEN 'Apr' THEN '04' WHEN 'May' THEN '05' WHEN 'Jun' THEN '06'
	WHEN 'Jul' THEN '07' WHEN 'Aug' THEN '08' WHEN 'Sep' THEN '09' WHEN 'Oct' THEN '10' WHEN 'Nov' THEN '11'
	ELSE '12' END || '-' || SUBSTR(TIME_NK,2,2) || ' 00:00:00' ) AS EVENT_DT,
	BROWSER AS USER_AGENT_NK,
	REQUEST_NK,
	IP_NR,
	STATUS,
	LINE_NK,
	BYTES
FROM STG_ACCESS_LOG
)
SELECT
	CAST(STG.EVENT_DT AS INTEGER) AS EVENT_DT,
	USG.DIM_USER_AGENT_ID,
	HST.DIM_HTTP_STATUS_ID,
	COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')=0 THEN STG.REQUEST_NK END) ) AS PAGE_CNT,
	COUNT(DISTINCT (CASE WHEN INSTR(STG.REQUEST_NK,'.')>0 THEN STG.REQUEST_NK END) ) AS FILE_CNT,
	COUNT(DISTINCT STG.REQUEST_NK) AS REQUEST_CNT,
	COUNT(DISTINCT STG.LINE_NK) AS LINE_CNT,
	COUNT(DISTINCT STG.IP_NR) AS IP_CNT,
	SUM(BYTES) AS BYTES
FROM STG,
	DIM_HTTP_STATUS HST,
	DIM_USER_AGENT USG
WHERE STG.STATUS = HST.STATUS_NK
  AND STG.USER_AGENT_NK = USG.USER_AGENT_NK
  AND CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from /* load epoch date */
  AND CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', date('now', 'start of day'))
GROUP BY STG.EVENT_DT, HST.DIM_HTTP_STATUS_ID, USG.DIM_USER_AGENT_ID

ʻO ka waihona sqlite hiki iā ʻoe ke kākau i nā nīnau paʻakikī. Loaʻa iā WITH ka hoʻomākaukau ʻana i nā ʻikepili a me nā kī. ʻOhi ka nīnau nui i nā kuhikuhi a pau i nā ana.

ʻAʻole e ʻae ke kūlana i ka hoʻouka hou ʻana i ka mōʻaukala: CAST(STG.EVENT_DT AS INTEGER) > $param_epoch_from, kahi o ka ʻāpana ka hopena o ka noi.
'KOHO COALESCE(MAX(EVENT_DT), '3600') AS LAST_EVENT_EPOCH MAI FCT_ACCESS_USER_AGENT_DD'

E hoʻouka wale ke kūlana i ka lā piha: CAST(STG.EVENT_DT AS INTEGER) < strftime('%s', lā('now', 'hoʻomaka o ka lā'))

Lawe ʻia ka helu ʻana i nā ʻaoʻao a i ʻole nā ​​faila ma ke ʻano mua, ma ka ʻimi ʻana i kahi kiko.

Nā hōʻike

Ma nā ʻōnaehana hiʻohiʻona paʻakikī, hiki ke hana i kahi meta-model e pili ana i nā mea waihona, hoʻokele dynamically i nā kānana a me nā lula aggregation. ʻO ka mea hope loa, hana nā mea hana maikaʻi a pau i kahi nīnau SQL.

Ma kēia hiʻohiʻona, e hana mākou i nā nīnau SQL i mākaukau a mālama iā lākou e like me nā manaʻo i loko o ka waihona - he mau hōʻike kēia.

Hōʻikeʻike

Bluff: Ua hoʻohana ʻia nā kiʻi nani ma JavaScript ma ke ʻano he mea hana ʻike

No ka hana ʻana i kēia, pono e hele i nā hōʻike āpau me ka hoʻohana ʻana i ka PHP a hana i kahi faila html me nā papa.

$sqls = array(
'SELECT * FROM RPT_ACCESS_USER_VS_BOT',
'SELECT * FROM RPT_ACCESS_ANNOYING_BOT',
'SELECT * FROM RPT_ACCESS_TOP_HOUR_HIT',
'SELECT * FROM RPT_ACCESS_USER_ACTIVE',
'SELECT * FROM RPT_ACCESS_REQUEST_STATUS',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_PAGE',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_REFERRER',
'SELECT * FROM RPT_ACCESS_NEW_REQUEST',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_SUCCESS',
'SELECT * FROM RPT_ACCESS_TOP_REQUEST_ERROR'
);

ʻIke wale ka mea hana i nā papa o nā hopena.

hopena

Ke hoʻohana nei i ka loiloi pūnaewele ma ke ʻano he laʻana, wehewehe ka ʻatikala i nā hana e pono ai ke kūkulu ʻana i nā hale waihona ʻikepili. E like me ka ʻike ʻia mai nā hopena, lawa nā mea hana maʻalahi no ka nānā hohonu a me ka ʻike ʻana i ka ʻikepili.

I ka wā e hiki mai ana, me ka hoʻohana ʻana i kēia waihona ma ke ʻano he laʻana, e hoʻāʻo mākou e hoʻokō i nā hale e like me ka hoʻololi mālie ʻana i nā ana, metadata, nā pae hoʻohui a me ka hoʻohui ʻana i nā ʻikepili mai nā kumu like ʻole.

Eia kekahi, e nānā pono kākou i ka mea hana maʻalahi no ka hoʻokele ʻana i nā kaʻina ETL e pili ana i kahi papa hoʻokahi.

E hoʻi kāua i ke kumuhana o ke ana ʻana i ka maikaʻi o ka ʻikepili a me ka hoʻomaʻamaʻa ʻana i kēia kaʻina hana.

E aʻo mākou i nā pilikia o ka ʻenehana ʻenehana a me ka mālama ʻana i nā waihona ʻikepili, kahi e hoʻokō ai mākou i kahi kikowaena mālama me nā kumuwaiwai liʻiliʻi, no ka laʻana, e pili ana i kahi Raspberry Pi.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka