An-dràsta, bidh cha mhòr a h-uile companaidh san t-saoghal a’ cruinneachadh staitistig mu ghnìomhan luchd-cleachdaidh air goireas lìn. Tha am brosnachadh soilleir - tha companaidhean airson faighinn a-mach mar a tha an toradh / làrach-lìn aca air a chleachdadh agus an luchd-cleachdaidh a thuigsinn nas fheàrr. Gu dearbh, tha àireamh mhòr de dh ’innealan air a’ mhargaidh gus an duilgheadas seo fhuasgladh - bho shiostaman anailitigeach a bheir seachad dàta ann an cruth dashboards agus ghrafaichean (mar eisimpleir
Ach lorg sinn duilgheadas nach deach fhuasgladh fhathast. Mar sin rugadh e
Carson a bu chòir dhuinn ar seirbheis fhìn a leasachadh?
B’ e na naochadan a bh’ ann, thàinig sinn beò mar a b’ fheàrr a b’ urrainn dhuinn. 2019, leasaich sinn an API Ciad Àrd-ùrlar Dàta Luchd-ceannach kSense, a rinn e comasach dàta a chruinneachadh bho dhiofar thùsan (sanasan Facebook, Stripe, Salesforce, Google play, Google Analytics, msaa) airson mion-sgrùdadh dàta nas goireasaiche, a’ comharrachadh eisimeileachd, msaa. Tha sinn air mothachadh gu bheil mòran de luchd-cleachdaidh a 'cleachdadh ar n-àrd-ùrlar airson mion-sgrùdadh dàta gu sònraichte Google Analytics (an dèidh seo GA). Bhruidhinn sinn ri cuid de luchd-cleachdaidh agus fhuair sinn a-mach gu bheil feum aca air an dàta anailis airson an toradh a gheibh iad a’ cleachdadh GA, ach
Chuir iad a-steach piogsail javascript Segment air an goireas lìn aca agus chaidh dàta mu ghiùlan an luchd-cleachdaidh aca a luchdachadh a-steach don stòr-dàta ainmichte (mar eisimpleir Postgres). Ach tha an eas-bhuannachd aig Segment cuideachd - a’ phrìs. Mar eisimpleir, ma tha 90,000 MTU aig goireas lìn (luchd-cleachdaidh tracadh mìosail), feumaidh tu ~ 1,000 $ a phàigheadh gach mìos don ionmhasair. Bha an treas duilgheadas ann cuideachd - chuir cuid de leudachaidhean brobhsair (leithid AdBlock) bacadh air cruinneachadh anailitigeach oir... Chaidh iarrtasan http bhon bhrobhsair a chuir gu raointean GA agus Segment. Stèidhichte air miann ar luchd-dèiligidh, tha sinn air seirbheis anailis a chruthachadh a bhios a’ tional seata iomlan de dhàta (gun samplachadh), an-asgaidh agus as urrainn obrachadh air a’ bhun-structar againn fhèin.
Mar a tha an t-seirbheis ag obair
Tha trì pàirtean san t-seirbheis: piogsail javascript (a rinn sinn ath-sgrìobhadh nas fhaide air adhart ann an clò-sgrìobhadh), tha pàirt an fhrithealaiche air a chuir an gnìomh sa chànan GO, agus bhathas an dùil Redshift agus BigQuery a chleachdadh mar stòr-dàta a-staigh (an dèidh sin chuir iad taic ris. Postgres, ClickHouse agus maoim-sneachda).
Chaidh co-dhùnadh structar tachartasan GA agus Segment fhàgail gun atharrachadh. Cha robh a dhìth ach a h-uile tachartas a dhùblachadh bhon ghoireas lìn far a bheil am piogsail air a chuir a-steach don backend againn. Mar a thionndaidh e, chan eil seo duilich a dhèanamh. Chuir am piogsail Javascript thairis an dòigh leabharlainn GA tùsail le fear ùr, a dhùblaich an tachartas a-steach don t-siostam againn.
//'ga' - стандартное название переменной Google Analytics
if (window.ga) {
ga(tracker => {
var originalSendHitTask = tracker.get('sendHitTask');
tracker.set('sendHitTask', (model) => {
var payLoad = model.get('hitPayload');
//отправка оригинального события в GA
originalSendHitTask(model);
let jsonPayload = this.parseQuery(payLoad);
//отправка события в наш сервис
this.send3p('ga', jsonPayload);
});
});
}
Leis an Segment pixel tha a h-uile dad nas sìmplidh; tha dòighean meadhan-bathair ann, a chleachd sinn aon dhiubh.
//'analytics' - стандартное название переменной Segment
if (window.analytics) {
if (window.analytics.addSourceMiddleware) {
window.analytics.addSourceMiddleware(chain => {
try {
//дублирование события в наш сервис
this.send3p('ajs', chain.payload);
} catch (e) {
LOG.warn('Failed to send an event', e)
}
//отправка оригинального события в Segment
chain.next(chain.payload);
});
} else {
LOG.warn("Invalid interceptor state. Analytics js initialized, but not completely");
}
} else {
LOG.warn('Analytics.js listener is not set.');
}
A bharrachd air a bhith a’ dèanamh lethbhreac de thachartasan, tha sinn air comas json neo-riaghailteach a chuir gu:
//Отправка событий с произвольным json объектом
eventN.track('product_page_view', {
product_id: '1e48fb70-ef12-4ea9-ab10-fd0b910c49ce',
product_price: 399.99,
price_currency: 'USD'
product_release_start: '2020-09-25T12:38:27.763000Z'
});
An ath rud, bruidhnidh sinn mu phàirt an fhrithealaiche. Bu chòir don backend gabhail ri iarrtasan http, lìon iad le fiosrachadh a bharrachd, mar eisimpleir, dàta geo (taing
//входящий json
{
"field_1": {
"sub_field_1": "text1",
"sub_field_2": 100
},
"field_2": "text2",
"field_3": {
"sub_field_1": {
"sub_sub_field_1": "2020-09-25T12:38:27.763000Z"
}
}
}
//результат
{
"field_1_sub_field_1": "text1",
"field_1_sub_field_2": 100,
"field_2": "text2",
"field_3_sub_field_1_sub_sub_field_1": "2020-09-25T12:38:27.763000Z"
}
Ach, tha arrays an-dràsta dìreach air an tionndadh gu sreangan oir Chan eil a h-uile stòr-dàta dàimheach a’ toirt taic do raointean a tha air an ath-aithris. Tha e comasach cuideachd ainmean achaidhean atharrachadh no an sguabadh às le bhith a’ cleachdadh riaghailtean mapaidh roghnach. Leigidh iad leat an sgeama dàta atharrachadh ma tha sin riatanach no aon seòrsa dàta a thionndadh gu fear eile. Mar eisimpleir, ma tha sreang ann an raon json le stampa-ama (raon_3_sub_field_1_sub_sub_field_1 bhon eisimpleir gu h-àrd), an uairsin gus raon a chruthachadh anns an stòr-dàta leis an t-seòrsa stampa-ama, feumaidh tu riaghailt mapaidh a sgrìobhadh anns an rèiteachadh. Ann am faclan eile, tha an seòrsa dàta den raon air a dhearbhadh an toiseach leis an luach json, agus an uairsin thèid an riaghailt tilgeadh seòrsa (ma tha e air a rèiteachadh) a chuir an sàs. Tha sinn air 4 prìomh sheòrsan dàta a chomharrachadh: STRING, FLOAT64, INT64 agus TIMESTAMP. Tha na riaghailtean mapaidh agus seòrsa tilgeadh a’ coimhead mar seo:
rules:
- "/field_1/subfield_1 -> " #правило удаления поля
- "/field_2/subfield_1 -> /field_10/subfield_1" #правило переноса поля
- "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #правило переноса поля и приведения типа
Algorithm airson co-dhùnadh an t-seòrsa dàta:
- tionndaidh structar json gu structar còmhnard
- a’ dearbhadh an seòrsa dàta de raointean a rèir luachan
- cur an sàs riaghailtean mapaidh agus seòrsa tilgeadh
An uairsin bhon structar json a tha a’ tighinn a-steach:
{
"product_id": "1e48fb70-ef12-4ea9-ab10-fd0b910c49ce",
"product_price": 399.99,
"price_currency": "USD",
"product_type": "supplies",
"product_release_start": "2020-09-25T12:38:27.763000Z",
"images": {
"main": "picture1",
"sub": "picture2"
}
}
gheibhear an sgeama dàta:
"product_id" character varying,
"product_price" numeric (38,18),
"price_currency" character varying,
"product_type" character varying,
"product_release_start" timestamp,
"images_main" character varying,
"images_sub" character varying
Bha sinn cuideachd den bheachd gum bu chòir gum biodh an neach-cleachdaidh comasach air sgaradh no roinneadh dàta san stòr-dàta a rèiteachadh a rèir slatan-tomhais eile agus chuir sinn an gnìomh an comas ainm a’ bhùird a shuidheachadh le cunbhalach no
tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'
Ach, faodaidh structar thachartasan a tha a’ tighinn a-steach atharrachadh aig àm ruith. Tha sinn air algorithm a chuir an gnìomh gus sgrùdadh a dhèanamh air an eadar-dhealachadh eadar structar clàr a tha ann mar-thà agus structar tachartas a tha a’ tighinn a-steach. Ma lorgar eadar-dhealachadh, thèid an clàr ùrachadh le raointean ùra. Gus seo a dhèanamh, cleachd an ceist SQL paiste:
#Пример для Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying
ailtireachd
Carson a dh’fheumas tu tachartasan a sgrìobhadh chun t-siostam faidhle, agus chan ann dìreach gan sgrìobhadh gu dìreach chun stòr-dàta? Cha bhi stòran-dàta an-còmhnaidh a’ coileanadh gu math nuair a thathar a’ dèiligeadh ri àireamh mhòr de chuir-a-steach (
Open Source agus planaichean airson an ama ri teachd
Aig àm air choreigin, thòisich an t-seirbheis a’ coimhead coltach ri toradh làn-chuimseach agus chuir sinn romhainn a leigeil ma sgaoil gu Open Source. An-dràsta, tha aonachadh le Postgres, ClickHouse, BigQuery, Redshift, S3, Snowflake air an cur an gnìomh. Bidh a h-uile aonachadh a’ toirt taic do gach cuid modhan baidse is sruthadh de luchdachadh dàta. Taic a bharrachd airson iarrtasan tro API.
Tha an sgeama amalachaidh gnàthach a’ coimhead mar seo:
Ged a ghabhas an t-seirbheis a chleachdadh gu neo-eisimeileach (mar eisimpleir a’ cleachdadh Docker), tha againn cuideachd
→
→
→
Bidh sinn toilichte ma tha EventNative a’ cuideachadh le fuasgladh fhaighinn air na duilgheadasan agad!
Chan fhaod ach luchd-cleachdaidh clàraichte pàirt a ghabhail san sgrùdadh.
Dè an siostam cruinneachadh staitistig a thathas a’ cleachdadh sa chompanaidh agad?
-
48,0%Google Analytics 12
-
4,0%Earrann1
-
16,0%Fear eile (sgrìobh anns na beachdan)4
-
32,0%Chuir thu do sheirbheis an gnìomh8
Bhòt 25 neach-cleachdaidh. Sheall 6 neach-cleachdaidh.
Source: www.habr.com