క్రియేటర్ అనలిటిక్స్ను విస్తరించడానికి రోబ్లాక్స్ థీటా స్కెచ్లను ఎలా ఉపయోగించింది

నేటి రియల్-టైమ్ మల్టీప్లేయర్ గేమ్లకు అనలిటిక్స్ చాలా అవసరం. రాబ్లాక్స్లో, మా సృష్టికర్తలు వృద్ధి చెందడానికి సహాయపడే కొలమాన సాధనాలను అభివృద్ధి చేయడంపై మేము దృష్టి పెడుతున్నాము. మా ఉచిత, అవుట్-ఆఫ్-ది-బాక్స్ అనలిటిక్స్, సృష్టికర్తలకు వారి అనుభవాల వృద్ధి, వినియోగదారుల సంపాదన, మరియు నిలుపుదలపై తక్షణ అంతర్దృష్టిని అందిస్తాయి, వారి విజయాన్ని గరిష్ఠం చేయడంలో సహాయపడతాయి.
లక్షలాది మంది రాబ్లాక్స్ సృష్టికర్తలు ఆధారపడే అత్యంత తాజా విశ్లేషణ వ్యవస్థలను నిర్మించడం ఒక ముఖ్యమైన సవాలు. దానిని పరిష్కరించడానికి, మేము మా విశ్లేషణ క్వెరీ ఇంజిన్ను ఆప్టిమైజ్ చేసాము, తద్వారా 120 కోర్ ప్రాసెసింగ్ క్లస్టర్, 86 TB డేటాను యాక్సెస్ చేసే సుమారు 300,000 రోజువారీ సందర్శకుల నుండి రోజుకు 6 మిలియన్లకు పైగా క్వెరీలకు సేవ చేయగలదు. మా పరిష్కారం యొక్క కేంద్రబిందువు ఆన్లైన్ అనలిటికల్ ప్రాసెసింగ్ (OLAP) డేటాబేస్, దీనిని మేము దాని స్కేలబిలిటీ మరియు అప్రోక్షిమేషన్ అల్గారిథమ్లతో దాని అనుసంధానం కోసం ఎంచుకున్నాము. డేటా రోలప్ టెక్నిక్ల మిశ్రమం, అలాగే హైపర్లాగ్లాగ్ మరియు థీటా స్కెచ్ అల్గారిథమ్లను ఉపయోగించి, మేము లక్షలాది రాబ్లాక్స్ అనుభవాలకు¹ విశ్లేషణలను అందిస్తాము.
OLAP అనలిటిక్స్ పై ఒక ప్రాథమిక మార్గదర్శి
ఎంత ఎక్కువ డేటాను క్వెరీ చేస్తే, ఫలితాలను ఉత్పత్తి చేయడానికి అంత ఎక్కువ సమయం పడుతుంది. అవసరమైన డేటాను తగ్గించి, విశ్లేషణ ప్రక్రియను వేగవంతం చేయగలిగినప్పుడు, సృష్టికర్తలు తమ చర్యల నుండి దాదాపు నిజ-సమయ అంతర్దృష్టులను పొందగలరు. మేము ఉపయోగించే కొన్ని పద్ధతులు:
- కాలమ్నార్ స్టోరేజ్: OLAP, డ్రూయిడ్, అవసరమైన కాలమ్లను మాత్రమే చదువుతుంది.
- పార్టిషన్ మరియు సార్ట్ ఫిల్టర్లు: OLAP అవసరమైన డేటా బ్లాక్లకు నేరుగా ఇండెక్స్ చేసే సంబంధిత ఫైల్లను మాత్రమే చదువుతుంది.
- రోలప్: OLAP సాధారణ గ్రూపింగ్లను ఉపయోగించి ఈవెంట్లను పాక్షికంగా సమూహీకరిస్తుంది.
ముఖ్యంగా రోలప్లు, Spark లేదా Presto వంటి అతిపెద్ద SQL క్వెరీ ఇంజిన్లకు (పదుల సెకన్ల ఆలస్యంతో) మరియు సాధారణంగా పూర్తిగా ఏకీకృతం చేయబడిన డేటాను అందించే పాయింట్ క్వెరీ లేదా పరిమిత SQLకి మధ్య OLAPలు పనిచేయడానికి వీలు కల్పిస్తాయి. రోలప్లతో, క్వెరీలు డైమెన్షన్ల సమూహాల ద్వారా కీ చేయబడతాయి, దీని ఫలితంగా మొత్తం వరుస కార్డినాలిటీలో పెద్ద తగ్గుదల ఉంటుంది. బిల్లియన్ల లేదా ట్రిలియన్ల కొద్దీ ముడి ఈవెంట్లను చూసేటప్పుడు, వాటిని సబ్-సెకండ్ లేటెన్సీతో సమీకరించగల మిలియన్ల కొద్దీ గ్రూపింగ్లలోకి రోల్అప్ చేయడం చాలా సమర్థవంతంగా ఉంటుంది. ఉదాహరణకు:

రోలప్లు పైన పేర్కొన్న తగ్గింపు ప్రయోజనాలను అందించినప్పటికీ, డిస్టిక్ట్ కౌంట్స్, పర్సంటైల్స్ మరియు ఫ్రీక్వెన్సీ క్వెరీల వంటి ముడి డేటా యొక్క పూర్తి టేబుల్ సార్ట్ అవసరమయ్యే కొన్ని మెట్రిక్స్ వాటికి ప్రతిఘటిస్తాయి.
అదృష్టవశాత్తు, పూర్తి డేటాసెట్లో ఒక నమూనాను కలిగి ఉండే సంక్లిష్టమైన డేటా నిర్మాణాల ఆధారంగా, గణాంకపరంగా పరిమితమైన సుమారు ఫలితాన్ని అందించే పద్ధతులతో మనం ఈ పరిమితులను అధిగమించవచ్చు. ఈ డేటా నిర్మాణాలు రోలప్ పద్ధతులలో ఉపయోగించడానికి రూపొందించబడ్డాయి మరియు రెండు వేర్వేరు కౌంట్లను, రెండు సంఖ్యలను కలిపినట్లుగా, ఒక యూనియన్ ఆపరేషన్ ద్వారా కలుపుతాయి.
రాబ్లాక్స్ అనలిటిక్స్ వర్క్లోడ్లను విశ్లేషించడం
రాబ్లాక్స్లో, మేము సృష్టికర్తలకు వారి అత్యంత ముఖ్యమైన అంతర్దృష్టులను కనుగొనగల ఒక కేంద్రీకృత డాష్బోర్డ్ను అందిస్తాము. వీటిలో ఇవి ఉన్నాయి:
- ఎంగేజ్మెంట్: రోజువారీ యాక్టివ్ వినియోగదారులు (DAU), నెలవారీ యాక్టివ్ వినియోగదారులు (MAU), నిలుపుదల, మరియు ఫన్నెల్స్
- మొనటైజేషన్: రాబడి, ప్రతి వినియోగదారునికి సగటు రాబడి, అమ్మకాలు, మరియు ఆర్థిక వ్యవస్థ
- సముపార్జన డేటా
- థంబ్నెయిల్ వ్యక్తిగతీకరణ మరియు ప్రయోగ ఫలితాలు
- హోమ్ సిఫార్సుల విశ్లేషణ
- మరిన్ని రాబోతున్నాయి.

క్వెరీ ఇంజిన్ను ఎంచుకోవడం మరియు ఆప్టిమైజ్ చేయడం
పనితీరు సవాళ్లను అధిగమించడం
ఉత్పత్తి షాడో టెస్టింగ్ యొక్క చివరి రౌండ్లో, మేము ఒక ముఖ్యమైన సవాలును కనుగొన్నాము: ఒకే పెద్ద క్వెరీల నుండి రోజువారీ అగ్రిగేషన్ నమూనాలకు మారిన తర్వాత మా MAU క్వెరీ పనితీరును బలోపేతం చేయవలసి వచ్చింది. ఇవి మా క్రియేటర్ అనలిటిక్స్ విజువలైజేషన్లకు చాలా కీలకమైనవి.
క్వెరీ యొక్క నిర్మాణం మా OLAP పరిష్కారం యొక్క అంతర్లీన పనితీరును బాగా ప్రభావితం చేసిందని మేము కనుగొన్నాము. బహుళ ఎగ్జిక్యూషన్ దశలు (నెస్టెడ్ "GROUP BY" స్టేట్మెంట్ల వంటివి) ఉన్న ప్రామాణిక క్వెరీలు తరచుగా పనిలో పెద్ద భాగాన్ని తేలికపాటి బ్రోకర్ నోడ్లపైకి నెట్టివేస్తాయి.
ఇది ఒక సాంప్రదాయ బిగ్ డేటా సమస్య, దీనిలో ఒక క్వెరీలోని కొంత భాగం ముఖ్యమైన చిన్న సర్వ్ చేసే నోడ్లపై అమలు చేయబడుతుంది. మా అప్రోక్సిమేట్ డేటా స్ట్రక్చర్లు సాధారణ కౌంట్స్ లేదా సమ్స్ వలె పనిచేస్తాయని మేము ఆశించాము, కానీ అవి వాస్తవానికి చాలా భిన్నంగా ప్రవర్తిస్తున్నాయని మేము కనుగొన్నాము.
కింద ఉన్న చిత్రం ఈ సమస్యను వివరిస్తుంది. ఇది మా హిస్టారికల్ నోడ్లు ఎలా పాక్షిక అగ్రిగేషన్ను చేస్తాయో, ప్రతి రోజుకు ఒక థీటా స్కెచ్ను రూపొందించి, ఆపై వాటి డేటాను బ్రోకర్కు తిరిగి పంపుతాయో చూపిస్తుంది. ఆ తర్వాత బ్రోకర్, ప్రతి పెద్ద రోజువారీ స్కెచ్ను ఒక్క నెలవారీ విలువగా విలీనం చేయడానికి ప్రయత్నించింది. 30 రోజుల MAU కోసం, దీని అర్థం ఒక బ్రోకర్పై 1,800 గరిష్ట-పరిమాణ థీటా స్కెచ్లను విలీనం చేయడం, ఇది బ్రోకర్ CPUను ఏకస్వామ్యం చేస్తూ, నెమ్మదిగా, వైఫల్యాలకు గురయ్యే క్వెరీకి దారితీసింది.

అంచనా ప్రశ్నలపై ఆధారపడిన డేటా సోర్స్ల కోసం డేటా స్థానికతను గరిష్ఠం చేయడానికి, తక్కువ పెద్ద హిస్టారికల్ వర్కర్లతో OLAPను రన్ చేయడమే మా పరిష్కారం. ఆచరణలో, ఇది 100 MB కంటే ఎక్కువ డేటా ప్రాసెసింగ్ అవసరమయ్యే ఒక మర్జ్ ఆపరేషన్ను మా హిస్టారికల్ నోడ్లపైకి తిరిగి నెట్టింది.
SQLలో దీనిని సాధించడానికి, క్వెరీలు అవసరమైన సమాచారాన్ని చారిత్రక నోడ్లకు చేరవేయడానికి మేము ఇన్లైన్ జాయిన్ను ఉపయోగించాము మరియు ఇన్లైన్ ఫలిత తేదీల జాబితాతో ఒక క్వెరీని సిద్ధం చేశాము. ఆ తర్వాత ప్రతి ఫలిత తేదీ, చారిత్రక నోడ్ విభాగాల నుండి సంబంధిత డేటాను సేకరించగలదు. ఆ డేటా తర్వాత బ్రోకర్కు తిరిగి పంపబడుతుంది, అక్కడ ఫలితాలు, కింద చూపిన విధంగా, ఫలిత తేదీ నుండి మెట్రిక్ డేటాకు సంబంధించిన ఒకే మ్యాప్లోకి త్వరగా విలీనం చేయబడతాయి.

ఈ ఆప్టిమైజేషన్ పెద్ద-స్థాయి క్వెరీల పనితీరుపై నాటకీయ ప్రభావాన్ని చూపింది. ఒక ప్రధాన అనుభవం యొక్క దేశం వారీగా MAU విభజన కోసం, సగటు క్వెరీ పనితీరు 5 రెట్లు మెరుగుపడింది (17.53 సెకన్ల నుండి 3.23 సెకన్లకు), ఇది కింద ఉన్న చార్ట్లో చూపబడింది. మేము బ్రోకర్పై CPU సమయంలో 50 రెట్ల తగ్గుదలను కూడా చూశాము (16.83 సెకన్ల నుండి 0.34 సెకన్లకు).
ఫలితాలు మారినప్పటికీ, సంక్లిష్టమైన ఆపరేషన్లను (లక్షలాది స్కెచ్లను విలీనం చేయడం వంటివి) జాగ్రత్తగా నిర్వహించడం యొక్క ప్రాముఖ్యతను ఇది నొక్కి చెబుతుంది. ఈ ఆపరేషన్లు సాధారణ అగ్రిగేషన్లకు సమానమని భావించడం వలన గణనీయమైన పనితీరు సమస్యలు తలెత్తవచ్చు, ముఖ్యంగా లాస్ట్-మైల్ క్లయింట్ అగ్రిగేషన్లు సాధారణంగా ఉండే సిస్టమ్లలో.
రోలప్లు మరియు ఒక సైద్ధాంతిక థీటా క్యూబ్

మేము ఒక థీటా క్యూబ్, లేదా ప్రాథమిక రోలప్ టేబుల్స్ మరియు పూర్తిగా రా టేబుల్స్ మధ్య అంతరాన్ని అప్రోక్సిమేట్ సెట్ ఇంటర్సెక్షన్ల ద్వారా పూరించడానికి ఒక సాధారణీకృత విధానాన్ని కూడా అన్వేషించాము. ఈ విధానం ఒక ప్రాథమిక పరిమితిని పరిష్కరిస్తుంది: క్వెరీలు అధిక-కార్డినాలిటీ డైమెన్షన్ల యొక్క అనేక పొరలను తాకవలసి వచ్చినప్పుడు రోలప్ టేబుల్స్ తమ ప్రయోజనాన్ని కోల్పోతాయి. ఎందుకంటే ప్రతి డైమెన్షన్, రోలప్ కార్డినాలిటీని ∏dim (డైమెన్షన్ల గుణకం)గా పెంచుతుంది.
మేము ఒక సిస్టమ్ను రూపొందించాము, ఇది సాధారణ డైమెన్షన్ గ్రూపుల ద్వారా కార్డినాలిటీ క్యాప్తో సమూహీకరణ చేస్తుంది, దీనివల్ల గ్రూపులోని దేనిపైనైనా రోల్అప్ పనితీరు ప్రశ్నలను అనుమతిస్తుంది. ఆ తర్వాత, గ్రూపుల మధ్య డైమెన్షన్ల కలయికల కోసం చూస్తున్నప్పుడు, మేము సెట్లపై ఒక అప్రోక్సిమేట్ జాయిన్4ను ప్రయత్నించి, లోపం అంచనాలతో పాటు మెట్రిక్ ఫలితాలను తిరిగి ఇస్తాము. అధిక అంచనా వేయబడిన లోపం ఉన్న ప్రశ్నను ఒక రా టేబుల్కు పంపుతారు, అక్కడ అనేక ఫిల్టర్లు పెద్ద పష్డౌన్ ఆప్టిమైజేషన్లకు వీలు కల్పించాలి.


ఈ దోష రేటును మనం త్వరగా లెక్కించగలము కాబట్టి, రా టేబుల్ను చదవడం కూడా సమర్థవంతంగా ఉంటుందనే బలమైన సంకేతంగా ఇది పనిచేస్తుంది. యూనియన్తో పోలిస్తే ఓవర్ల్యాపింగ్ డేటా తక్కువగా ఉన్న సందర్భాలలో (ఉదాహరణకు, జర్మనీలోని జపనీస్ మాట్లాడేవారు), రా టేబుల్లోని చాలా వరుసలు ఫిల్టర్ చేయబడతాయి. ఇది సమర్థవంతమైన పుష్డౌన్ ఆప్టిమైజేషన్లకు దారితీస్తుంది. డైమెన్షన్ గ్రూపులు, అప్రోక్సిమేట్ జాయిన్లు, మరియు ఎర్రర్-ఆధారిత రా టేబుల్ రీడ్లను ఉపయోగించే ఒక సిస్టమ్, అప్రోక్సిమేషన్-ఫ్రెండ్లీ క్వెరీలపై రోలప్ పనితీరును నిజంగా గరిష్ఠ స్థాయికి పెంచుతుంది.
రాబ్లాక్స్ కోసం, ఈ పరిష్కారం మా తదుపరి స్థాయి స్కేల్లో—సంభావ్యంగా డైనమిక్ ఫన్నెల్ లేదా కస్టమ్ ఈవెంట్ విశ్లేషణ కోసం—మరింత వర్తిస్తుంది, అదే సమయంలో మా ప్రస్తుత సాధారణ రోలప్ రెప్లికా నేటి అవసరాలను తీరుస్తుంది.
ఒక స్వీయ-సేవ ప్లాట్ఫారమ్ను నిర్మించడం
మా బ్రోకర్ను ఆప్టిమైజ్ చేసిన తర్వాత, మా OLAP సొల్యూషన్కు జోడించబడిన డేటాసెట్లను ఆన్బోర్డింగ్ చేయడానికి మరియు క్వెరీ చేయడానికి సాధనాలను నిర్మించడంపై దృష్టి సారించాము. మా డేటాస్కెచ్ ఫంక్షన్ల కోసం మేము ఒక ఓపెన్-సోర్స్ స్పార్క్ మరియు ట్రినో UDAF లైబ్రరీని నిర్మించాము, ఇది స్పార్క్ను మా OLAP6 వలె అదే బైనరీ డేటాస్కెచ్ ఫార్మాట్ను ఉపయోగించడానికి అనుమతిస్తుంది. ఇది మా కంప్యూట్ వర్క్లోడ్లో ఎక్కువ భాగాన్ని స్పార్క్లోనే ఉంచి, రాబ్లాక్స్ అంతటా అంచనాను ప్రామాణీకరించడంలో సహాయపడింది, కొన్ని డేటాసెట్ల కోసం కంప్యూట్ ఖర్చులను 80% వరకు తగ్గించే అవకాశం ఉంది.
మా బ్యాచ్ జాబ్ షెడ్యూలర్కు ఒక అంతర్గత పొడిగింపుతో ఆన్బోర్డింగ్ను మేము సులభతరం చేశాము మరియు ఓపెన్ క్వెరీల ప్రభావాన్ని తగ్గిస్తూ, నిర్దిష్ట కొలతలు మరియు డైమెన్షన్లను నిర్ణయించడంలో డెవలపర్లకు మార్గనిర్దేశం చేసే డేటాఫ్రేమ్-శైలి APIని నిర్వచించాము. మా OLAPలో ఈ డేటాను ఎలా లోడ్ చేయాలో మరియు క్వెరీ చేయాలో తెలిపే కొన్ని నమూనా వర్క్ఫ్లోలను కూడా మేము ఓపెన్ సోర్స్ చేసాము.
మా ఆప్టిమైజ్ చేసిన అనలిటిక్స్ డేటాసెట్లు ఇప్పుడు మా సృష్టికర్తలకు లోతైన అంతర్దృష్టులను అందిస్తున్నాయి. మా ఆప్టిమైజేషన్లు సగటు పనితీరును 4 రెట్లు మరియు అత్యంత తక్కువ పనితీరును 50 రెట్లు మెరుగుపరిచాయి. ఈ స్వీయ-సేవ ప్లాట్ఫారమ్, డెవలపర్ల కోసం కొత్త డేటాసెట్లపై పునరావృతం చేస్తూ పని చేస్తూ ఉండటానికి మా క్రియేటర్ అనలిటిక్స్ బృందానికి వీలు కల్పిస్తుంది. Robloxలో అద్భుతమైన అనుభవాలను సృష్టించడానికి అన్ని పరిమాణాల డెవలపర్లు ఈ సాధనాలను ఉపయోగించడం చూడటానికి మేము ఉత్సాహంగా ఉన్నాము.
1 ఏ యాక్సెస్
అయినా ఉన్న ప్రత్యేక యూనివర్స్ల యొక్క గత 60 రోజుల డేటాతో లెక్కించబడింది 2 ఈ సరళమైన MAU క్వెరీ
వలె 3 ఫలితాలు మార్చి 21-28, 2025
నుండి 4 ఈ విధంగా నిర్వహించబడింది: SELECT c.experience_id, c.country, p.platform, THETA_INTERSECT(c.user_theta, p.user_theta) from (select experience_id, country, user_theta from theta_cube where agg_level = country) c union (select experience_id, platform, user_theta from theta_cube where agg_level = platform) p
5 https://datasketches.apache.org/docs/Theta/ThetaSketchSetOpsAccuracy.html
6 ఒక డ్రూయిడ్ SQL ఫంక్షన్ ద్వారా COMPLEX_DECODE_BASE64('HLLSketch', sketch_col_name ).


