Ko te hitori o to maatau puna tuwhera: me pehea ta matou hanga i tetahi ratonga tātaritanga i roto i a Go me te whakaputa i te whanuitanga

I tenei wa, tata ki nga kamupene katoa o te ao ka kohikohi tatauranga mo nga mahi a nga kaiwhakamahi i runga i te rauemi tukutuku. He maamaa te hihiri - e hiahia ana nga kamupene ki te mohio me pehea te whakamahi i o raatau hua/paetukutuku me te mohio ake ki o raatau kaiwhakamahi. Ko te tikanga, he maha nga taputapu kei runga i te maakete hei whakaoti i tenei raru - mai i nga punaha tātaritanga e whakarato ana i nga raraunga i te ahua o nga papatohu me nga kauwhata (hei tauira. tātaritanga Google) ki te Raraunga Raraunga Kaihoko, ka taea e koe te kohi me te whakahiato raraunga mai i nga punaa rereke i roto i tetahi whare putunga (hei tauira wāhanga).

Engari i kitea he raru kaore ano kia whakatauhia. Koia i whanau ai TakahangaNative — ratonga tātaritanga puna tuwhera. Panuitia te take i whakatau ai matou ki te whakawhanake i ta matou ake ratonga, he aha te mea i homai ki a matou, he aha te mutunga (me nga waahanga tohu).

Ko te hitori o to maatau puna tuwhera: me pehea ta matou hanga i tetahi ratonga tātaritanga i roto i a Go me te whakaputa i te whanuitanga

No te aha e tia ’i ia tatou ia faatupu i ta tatou iho taviniraa?

Ko nga tau iwa tekau, i ora matou i nga mea katoa i taea e matou. 2019, i whakawhanakehia e matou te API Raraunga Kaihoko Tuatahi kSense, i taea ai te whakahiato raraunga mai i nga punaa rereke (Facebook ads, Stripe, Salesforce, Google play, Google Analytics, etc.) mo te pai ake o te tātari raraunga, te tautuhi i nga whakawhirinaki, me era atu. Kua kite matou he maha nga kaiwhakamahi e whakamahi ana i to maatau papaahi mo te tātari raraunga me te Google Analytics (i muri nei ko GA). I korero matou ki etahi kaiwhakamahi ka kitea e hiahia ana ratou ki nga raraunga tātaritanga mo o raatau hua ka whakawhiwhia ki a raatau ma te whakamahi GA, engari Ko nga raraunga tauira a Google a mo te nuinga, ko te atanga Kaiwhakamahi GA ehara i te paerewa o te waatea. He nui a matou korero ki o matou kaiwhakamahi me te mohio he maha ano kei te whakamahi i te papaaahanga Waahanga (ko te mea, no tera ra ano. hokona mo te $3.2 piriona).

I whakauruhia e ratou he pika javascript Wāhanga ki o raatau rauemi paetukutuku me nga raraunga e pa ana ki te whanonga o a raatau kaiwhakamahi i utaina ki roto i te papaa raraunga kua tohua (hei tauira Postgres). Engari ko te Waahanga ano tona kino - te utu. Hei tauira, ki te mea he 90,000 MTU (kaiwhakamahi e whai ana i ia marama), me utu e koe ~1,000 $ ia marama ki te kaiawhina. He raru tuatoru ano - na etahi toronga tirotiro (penei i te AdBlock) i aukati i te kohinga o nga tātaritanga na te mea... I tukuna nga tono http mai i te kaitirotiro ki nga rohe GA me te Waahanga. I runga i nga hiahia o o taatau kiritaki, kua hangaia e matou he ratonga tātaritanga e kohikohi ana i te huinga katoa o nga raraunga (kaore he tauira), he kore utu ka taea te mahi i runga i o maatau ake hanganga.

Me pehea te mahi a te ratonga

E toru nga wahanga o te ratonga: he pika javascript (i tuhia ano e matou i muri mai ki te momotuhi), ka whakatinanahia te waahanga tūmau i roto i te reo GO, a i whakamaheretia kia whakamahia te Redshift me BigQuery hei papaarangi-whare (i muri mai ka taapirihia he tautoko mo Postgres, ClickHouse me Snowflake).

I whakatauhia kia waiho te hanganga o nga huihuinga GA me te Waahanga kia kaua e rereke. Ko nga mea katoa i hiahiatia ko te taarua i nga huihuinga katoa mai i te rauemi paetukutuku i whakauruhia ai te pika ki to maatau tuara. I te mea ka puta, ehara i te mea uaua ki te mahi. I takahia e te pika Javascript te tikanga wharepukapuka GA taketake me tetahi mea hou, nana i taarua te takahanga i roto i ta maatau punaha.

//'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);
        });
    });
}

Ma te pika Waahanga he ngawari ake nga mea katoa; kei a ia nga tikanga middleware, ko tetahi i whakamahia e matou.


//'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.');
}

I tua atu i te kape i nga huihuinga, kua taapirihia e matou te kaha ki te tuku json noa:


//Отправка событий с произвольным 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'
});

I muri mai, me korero mo te waahanga tūmau. Me whakaae te tuara ki nga tono http, whakakiia ki etahi atu korero, hei tauira, nga raraunga geo (whakawhetai maxmind mo tenei) ka tuhi ki roto i te putunga raraunga. I hiahia matou ki te hanga i te ratonga kia watea kia taea ai te whakamahi me te iti o te whirihoranga. Kua whakatinanahia e matou te mahinga o te whakatau i te raupapa raraunga i runga i te hanganga o te kaupapa json e tau mai ana. Ko nga momo raraunga ka tautuhia e nga uara. Ko nga mea kua kohanga ka pirau, ka whakahekehia ki te hanga papatahi:

//входящий 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"
}

Heoi, i tenei wa ka huri noa nga rarangi ki nga aho na te mea Ehara i te katoa o nga papaunga paaunga e tautoko ana i nga mara tukurua. Ka taea hoki te huri i nga ingoa mara, te whakakore ranei ma te whakamahi i nga ture mahere. Ka whakaaetia koe ki te huri i te aronuinga raraunga ki te tika, ki te huri ranei i tetahi momo raraunga ki tetahi atu. Hei tauira, mena kei roto i te mara json tetahi aho me te tohu wa (field_3_sub_field_1_sub_sub_field_1 mai i te tauira i runga ake nei), katahi ka taea e koe te hanga mara i roto i te papaaarangi me te momo tohu wa, me tuhi koe i tetahi ture mahere ki te whirihoranga. Arā, ko te momo raraunga o te āpure i te tuatahi ka whakatauhia e te uara json, katahi ka tukuna te momo ture maka (mehemea kua whirihora). Kua tautuhia e matou nga momo raraunga matua e 4: STRING, FLOAT64, INT64 me TIMESTAMP. He penei te ahua o nga ture mapi me te momo maka:

rules:
  - "/field_1/subfield_1 -> " #правило удаления поля
  - "/field_2/subfield_1 -> /field_10/subfield_1" #правило переноса поля
  - "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #правило переноса поля и приведения типа

Algorithm mo te whakatau i te momo raraunga:

  • hurihia te hanganga json ki te hanganga papatahi
  • te whakatau i te momo raraunga o nga mara ma nga uara
  • te whakamahi i te mapi me te momo tikanga maka

Na mai i te hanganga json taumai:

{
    "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"
    }
}

ka whiwhi te aronuinga raraunga:

"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

I whakaaro ano matou ka taea e te kaiwhakamahi te whirihora i te wehewehe, te wehewehe ranei i nga raraunga i roto i te papaaarangi i runga i etahi atu paearu me te whakatinana i te kaha ki te tautuhi i te ingoa ripanga me te pumau, whakapuakitanga i roto i te whirihoranga. I roto i te tauira i raro nei, ka tiakina te takahanga ki te ripanga me te ingoa kua tatauhia i runga i nga uara o te momo hua_hua me nga mara _timestamp (hei tauira taonga_2020_10):

tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'

Heoi, ka huri te hanganga o nga huihuinga taumai i te wa whakahaere. Kua whakatinanahia e matou he algorithm hei tirotiro i te rereketanga i waenga i te hanganga o te ripanga o naianei me te hanganga o tetahi huihuinga taumai. Mena ka kitea he rereketanga, ka whakahouhia te ripanga me nga mara hou. Hei mahi i tenei, whakamahia te patai SQL patch:

#Пример для Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying

hoahoanga

Ko te hitori o to maatau puna tuwhera: me pehea ta matou hanga i tetahi ratonga tātaritanga i roto i a Go me te whakaputa i te whanuitanga

He aha koe me tuhi i nga kaupapa ki te punaha konae, kaua e tuhi tika ki te papaa raraunga? Karekau e pai te mahi a nga papaunga raraunga i nga wa katoa e pa ana ki te maha o nga whakaurunga (Nga taunakitanga a Postgres). Hei mahi i tenei, ka tuhi a Logger i nga huihuinga taumai ki tetahi konae me te goroutine motuhake (miro) Ka panuihia e te Kaipupuri konae te konae, katahi ka hurihia nga raraunga ka whakatauhia. I muri i te mohio o te kaiwhakahaere Ripanga kei te noho hou te aronuinga ripanga, ka tuhia nga raraunga ki te papaarangi i roto i te puranga kotahi. I muri mai, i taapirihia e matou te kaha ki te tuhi tika i nga raraunga ki te paataka raraunga, engari ka whakamahia e matou tenei aratau mo nga huihuinga kaore i te maha - hei tauira, nga huringa.

Open Source me nga mahere mo te heke mai

I etahi wa, ka timata te ratonga ki te ahua o te hua tino pai ka whakatauhia e matou ki te tuku ki te Open Source. I tenei wa, kua whakatinanahia nga whakauru me nga Postgres, ClickHouse, BigQuery, Redshift, S3, Snowflake. Ko nga whakaurunga katoa e tautoko ana i nga momo puranga me te roma o te uta raraunga. He tautoko taapiri mo nga tono ma te API.

He penei te ahua o te kaupapa whakauru o naianei:

Ko te hitori o to maatau puna tuwhera: me pehea ta matou hanga i tetahi ratonga tātaritanga i roto i a Go me te whakaputa i te whanuitanga

Ahakoa ka taea te whakamahi takitahi te ratonga (hei tauira ma te whakamahi Docker), kei a matou ano putanga manaaki, ka taea e koe te whakarite whakaurunga me te whare putunga raraunga, taapiri he CNAME ki to rohe me te tiro i nga tatauranga mo te maha o nga huihuinga. Ko a maatau mahere tonu ko te taapiri i te kaha ki te whakahiato i nga tatauranga mai i tetahi rauemi paetukutuku, engari ano hoki nga raraunga mai i nga puna raraunga o waho ka penapena ki nga rokiroki e pai ana koe!

→ GitHub
→ Tuhinga
→ mangere

Ka koa matou mena ka awhina a EventNative ki te whakatau i o raru!

Ko nga kaiwhakamahi kua rehita anake ka uru ki te rangahau. Waitohu maitēnā.

He aha te punaha kohinga tatauranga e whakamahia ana i to kamupene?

  • 48,0 orauGoogle tiro12

  • 4,0 orauWāhanga1

  • 16,0 orauKo tetahi atu (tuhia ki nga korero)4

  • 32,0 orauI whakatinanahia to ratonga8

25 nga kaiwhakamahi i pooti. 6 nga kaiwhakamahi i aukati.

Source: will.com

Tāpiri i te kōrero