اوس مهال، په نړۍ کې نږدې هر شرکت د ویب سرچینې په اړه د کاروونکو کړنو په اړه احصایې راټولوي. انګیزه روښانه ده - شرکتونه غواړي پوه شي چې د دوی محصول / ویب پاڼه څنګه کارول کیږي او د دوی کاروونکي ښه پوهیږي. البته، د دې ستونزې د حل لپاره په بازار کې ډیری وسایل شتون لري - د تحلیلي سیسټمونو څخه چې د ډشبورډونو او ګرافونو په بڼه ډاټا چمتو کوي (د بیلګې په توګه
مګر موږ یوه ستونزه وموندله چې لاهم حل شوې نه ده. په دې توګه زیږیدلی
ولې موږ باید خپل خدمت ته وده ورکړو؟
دا نولسمه وه، موږ څومره چې کولی شو ژوندي پاتې شو. 2019، موږ د API لومړی پیرودونکي ډیټا پلیټ فارم جوړ کړ kSense، کوم چې دا ممکنه کړې چې د مختلف سرچینو څخه ډیټا راټول کړي (د فیسبوک اعلانونه ، سټریپ ، سیلز فورس ، ګوګل پلی ، ګوګل انلایټیکس ، او نور) د ډیرو اسانه ډیټا تحلیلونو لپاره ، د انحصار پیژندلو او داسې نورو لپاره. موږ ولیدل چې ډیری کاروونکي زموږ پلیټ فارم د ډیټا تحلیل لپاره کاروي په ځانګړي توګه د ګوګل انلاینټس (له دې وروسته GA). موږ د ځینو کاروونکو سره خبرې وکړې او وموندله چې دوی د دوی محصول لپاره تحلیلي معلوماتو ته اړتیا لري چې دوی د GA په کارولو سره ترلاسه کوي، مګر
دوی د دوی په ویب سرچینو کې د برخې جاوا سکرپٹ پکسل نصب کړی او د دوی د کاروونکو چلند په اړه معلومات په ټاکل شوي ډیټابیس کې بار شوي (د مثال په توګه پوسټګریس). مګر برخه هم خپل منفي اړخ لري - قیمت. د مثال په توګه، که یوه ویب سرچینه 90,000 MTU ولري (په میاشتنۍ توګه تعقیب شوي کاروونکي)، نو تاسو اړتیا لرئ چې کیشیر ته هره میاشت $ 1,000 تادیه کړئ. دریمه ستونزه هم وه - د براوزر ځینې توسیعونه (لکه اډ بلاک) د تحلیلونو راټولول بند کړي ځکه چې ... د براوزر څخه http غوښتنې د GA او Segment ډومینونو ته لیږل شوي. زموږ د پیرودونکو د هیلو پراساس ، موږ یو تحلیلي خدمت رامینځته کړی چې د معلوماتو بشپړ سیټ راټولوي (پرته له نمونې اخیستلو) ، وړیا دی او کولی شي زموږ په خپل زیربنا کار وکړي.
خدمت څنګه کار کوي
خدمت درې برخې لري: د جاوا سکریپټ پکسل (کوم چې موږ وروسته په ټایپ سکریپټ کې بیا لیکلی)، د سرور برخه په GO ژبه کې پلي کیږي، او دا پالن شوی و چې Redshift او BigQuery د کور دننه ډیټابیس په توګه وکاروي (وروسته دوی د دې لپاره ملاتړ اضافه کړ. پوسټګریس، کلیک هاوس او سنو فلیک).
پریکړه وشوه چې د GA او سیګمینټ پیښو جوړښت بدل نه شي. ټول هغه څه ته اړتیا وه چې د ویب سرچینې څخه ټولې پیښې نقل کړي چیرې چې پکسل زموږ شاته کې نصب شوی. لکه څنګه چې دا معلومه شوه، دا کار کول ستونزمن ندي. جاواسکریپټ پکسل د اصلي GA کتابتون میتود له نوي سره بدل کړ، کوم چې زموږ په سیسټم کې پیښه نقل کړې.
//'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);
});
});
}
د سیګمینټ پکسل سره هرڅه ساده دي؛ دا د مینځني میتود میتودونه لري ، چې یو یې موږ کارولی.
//'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.');
}
د پیښو کاپي کولو سربیره ، موږ د خپل سري json لیږلو وړتیا اضافه کړې:
//Отправка событий с произвольным 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'
});
بیا، راځئ چې د سرور برخې په اړه وغږیږو. پس منظر باید د HTTP غوښتنې ومني، دوی د اضافي معلوماتو سره ډک کړي، د بیلګې په توګه، جیو ډاټا (مننه
//входящий 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"
}
په هرصورت، صفونه اوس مهال په ساده ډول تارونو ته بدل شوي ځکه چې ټول اړونده ډیټابیسونه د تکرار ساحو ملاتړ نه کوي. دا هم امکان لري چې د ساحې نومونه بدل کړئ یا د اختیاري نقشې کولو قواعدو په کارولو سره یې حذف کړئ. دوی تاسو ته اجازه درکوي د اړتیا په صورت کې د ډیټا سکیما بدل کړئ یا د یو ډیټا ډول بل ته بدل کړئ. د مثال په توګه، که د json ساحه د مهال ویش سره تار ولري (ساحه_3_sub_field_1_sub_sub_field_1 د پورته مثال څخه)، بیا د دې لپاره چې په ډیټابیس کې د ټایم سټیمپ ډول سره ساحه جوړه کړئ، تاسو اړتیا لرئ چې په ترتیب کې د نقشه کولو قواعد ولیکئ. په بل عبارت، د ساحې ډیټا ډول لومړی د json ارزښت لخوا ټاکل کیږي، او بیا د ډول کاسټ کولو اصول (که ترتیب شوی وي) پلي کیږي. موږ د معلوماتو 4 اصلي ډولونه پیژندلي دي: STRING، FLOAT64، INT64 او TIMESTAMP. د نقشه کولو او ډول کاسټ کولو قواعد داسې ښکاري:
rules:
- "/field_1/subfield_1 -> " #правило удаления поля
- "/field_2/subfield_1 -> /field_10/subfield_1" #правило переноса поля
- "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #правило переноса поля и приведения типа
د معلوماتو ډول ټاکلو لپاره الګوریتم:
- د json جوړښت فلیټ جوړښت ته بدل کړئ
- د ارزښتونو په واسطه د ساحو د معلوماتو ډول ټاکل
- د نقشه کولو او ډول ډول کاسټ کولو قواعد پلي کول
بیا د راتلونکی json جوړښت څخه:
{
"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"
}
}
د معلوماتو سکیما به ترلاسه شي:
"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
موږ دا هم فکر کاوه چې کارونکي باید د نورو معیارونو سره سم په ډیټابیس کې د ډیټا ویش تنظیم یا ویشلو وړتیا ولري او دا وړتیا پلي کړي چې د میز نوم د ثابت یا ثابت سره تنظیم کړي.
tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'
په هرصورت، د راتلونکو پیښو جوړښت کولی شي د چلولو په وخت کې بدلون ومومي. موږ یو الګوریتم پلي کړی ترڅو د موجوده جدول جوړښت او د راتلونکي پیښې جوړښت ترمینځ توپیر وګوري. که توپیر وموندل شي، جدول به د نوي ساحو سره تازه شي. د دې کولو لپاره، د پیچ SQL پوښتنې وکاروئ:
#Пример для Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying
معمارۍ
ولې تاسو اړتیا لرئ د فایل سیسټم ته پیښې ولیکئ، او نه یوازې دا مستقیم ډیټابیس ته ولیکئ؟ ډیټابیسونه تل ښه فعالیت نه کوي کله چې د لوی شمیر داخلونو سره معامله کیږي (
خلاص سرچینه او د راتلونکي لپاره پلانونه
په یو وخت کې، خدمت د بشپړ محصول په څیر ښکاري او موږ پریکړه وکړه چې دا خلاصې سرچینې ته خوشې کړو. اوس مهال، د Postgres، ClickHouse، BigQuery، Redshift، S3، Snowflake سره ادغام پلي شوي. ټول ادغامونه د ډیټا بارولو دواړه بیچ او سټرینګ حالتونو ملاتړ کوي. د API له لارې د غوښتنو لپاره ملاتړ اضافه شوی.
د ادغام اوسنی سکیم داسې ښکاري:
که څه هم خدمت په خپلواکه توګه کارول کیدی شي (د مثال په توګه د ډاکر کارول)، موږ هم لرو
موږ به خوښ یو که EventNative ستاسو د ستونزو په حل کې مرسته وکړي!
یوازې راجستر شوي کاروونکي کولی شي په سروې کې برخه واخلي.
ستاسو په شرکت کې د احصایې راټولولو کوم سیسټم کارول کیږي؟
-
۸۵٪د ګوګل انلایز ایکس اینوم ایکس
-
۸۵٪برخه 1
-
۸۵٪بل (په نظرونو کې ولیکئ) 4
-
۸۵٪ستاسو خدمتونه پلي کول8
25 کاروونکو رایه ورکړه. 6 کاروونکي منع شوي.
سرچینه: www.habr.com