MongoDB నుండి Postgresకు
ఇది దేని గురించి?
ఒక కంపెనీలో ఒక పదవికి ఇంటర్వ్యూ ఇస్తున్నప్పుడు, ఈ క్రింది ప్రశ్నకు సమాధానం ఇవ్వమని నన్ను అడిగారు: మీరు పరిష్కరించిన అత్యంత కష్టమైన సమస్యను దయచేసి వివరించగలరా? సంక్షిప్తంగా చెప్పాలంటే, నేను పరిష్కరించిన అత్యంత క్లిష్టమైన సమస్య eBayలో పనిచేస్తున్నప్పుడు ఎదురైంది. 2023 సంవత్సరంలో eBay యొక్క ఒక పెద్ద అంతర్గత ప్రాజెక్టును MongoDB ఉపయోగించడం నుండి Postgres ఉపయోగించడానికి నేను మార్చాను. అయితే, ఈ ప్రశ్న నేను ఈ కష్టమైన సమస్యను ఎలా పరిష్కరించానో ఆలోచించేలా చేసింది మరియు నా డెవలపర్ ప్రయాణాన్ని పరిశీలించుకునే అవకాశం కల్పించింది. అందువల్ల, ఆ ప్రశ్నకు నేను చాలా వివరణాత్మకమైన మరియు సమగ్ర సమాధానం రాశాను, అలాగే నా వెబ్సైట్లో నా సమాధానాన్ని పంచుకోవాలనుకున్నాను.
ప్రశ్న ఏమిటి?
మీరు పరిష్కరించిన అత్యంత కష్టమైన సమస్యను దయచేసి వివరించగలరా? దయచేసి 4 పేరాల కంటే తక్కువలో సమాధానమిస్తూ, ఈ విషయాలను మాకు తెలియజేయండి:
- మీరు ఏమి చేశారు
- అది కష్టతరం చేసిన విషయం ఏమిటి
- ఈ అనుభవం నుండి మీరు ఏమి నేర్చుకున్నారు
- దాని ఫలితంగా మీరు ఎలా ఎదిగారు
నా సమాధానం ఏమిటి?
1 - మీరు ఏమి చేశారు
ప్రస్తుతం, నా వృత్తి జీవితంలో నేను పరిష్కరించిన అత్యంత కష్టమైన సమస్య, eBayలో నా ప్రస్తుత పదవిలో పనిచేస్తున్నప్పుడు ఎదురైంది. ప్రస్తుతం eBayలో, Hitachi Vantara ద్వారా కాంట్రాక్ట్పై పనిచేస్తూ, నేను Storage Management System లేదా STMS అనే అంతర్గత సాధనాన్ని అభివృద్ధి చేసి నిర్వహిస్తున్నాను. eBay యొక్క Service & Storage Infrastructure (SSI) బృందం eBay డేటా కేంద్రాలలోని పరికరాలను పర్యవేక్షించడానికి మరియు నిర్వహించడానికి STMSను ఉపయోగిస్తుంది. అనేక అర్రేలు, స్విచ్లు, హోస్ట్లు, డిస్క్ గ్రూప్లు, క్లస్టర్లు మరియు డేటాబేస్ల కొలమానాలను ఒక ఇంజనీర్ పర్యవేక్షించగలిగే సామర్థ్యాన్ని STMS అందిస్తుంది. అలాగే, స్విచ్లు మరియు అర్రేల కోసం హెచ్చరికలను నిర్వహించడంతో పాటు, హోస్ట్ కేటాయింపుల వంటి అధునాతన పనులను ఒక ఇంజనీర్ సులభంగా పూర్తి చేయడానికి కూడా ఇది అనుమతిస్తుంది. eBay డేటా కేంద్రాల్లోని డజన్ల కొద్దీ లేదా వందల కొద్దీ అర్రేలు, స్విచ్లు, హోస్ట్లు, డిస్క్ గ్రూప్లు మరియు క్లస్టర్లకు సంబంధించిన నిమిషానికి 1.5 మిలియన్లకు పైగా కొలమానాలను STMS స్వీకరిస్తుంది. eBay యొక్క నిల్వ మౌలిక సదుపాయాలను పర్యవేక్షించడానికి మరియు నిర్వహించడానికి SSI బృందానికి ఇది ఒక కీలకమైన సాధనంగా పనిచేస్తుంది, ఇది eBay యొక్క ప్రధాన సేవ మరియు వ్యాపార నమూనాకు అత్యంత ముఖ్యమైనది. ఇవన్నీ తెలిసిన నేపథ్యంలో, eBayలో పనిచేసిన సమయంలో నేను పరిష్కరించాల్సి వచ్చిన అత్యంత కష్టమైన సమస్య, STMSను MongoDB డేటాబేస్ ఉపయోగించడం నుండి Postgres డేటాబేస్ ఉపయోగించడానికి మార్చడం.
2 - అది కష్టతరం చేసిన విషయం ఏమిటి
ఈ సమస్యను కష్టతరం చేసిన విషయం ఏమిటంటే, MongoDB మరియు Postgres ప్రాథమికంగా భిన్నమైన డేటాబేస్లు. MongoDB ఒక డాక్యుమెంట్-ఆధారిత డేటాబేస్ (NoSQL), అంటే డేటా ఒక కలెక్షన్లో JSONగా నిల్వ చేయబడుతుంది (ఫైలింగ్ క్యాబినెట్లోని డాక్యుమెంట్ల మాదిరిగా), కాగా Postgres ఒక రిలేషనల్ డేటాబేస్ (SQL), అంటే డేటా ఒక పట్టికలో వరుసలుగా నిల్వ చేయబడుతుంది (స్ప్రెడ్షీట్లో ఉన్నట్లుగా). అదనంగా, STMS యొక్క మొత్తం బ్యాక్ఎండ్ JSONలుగా డేటాను ప్రాసెస్ చేసి నిర్వహించడానికి నిర్మించబడింది మరియు డేటాబేస్ కార్యకలాపాల కోసం MongoDBతో ప్రత్యేకంగా అనుకూలమైన ప్యాకేజీలను ఉపయోగించింది. అలాగే, ఈ మార్పిడిని చేస్తున్నప్పుడు ఎటువంటి పనివిరామం ఉండకూడదు మరియు STMS ఒక అంతర్గత సాధనంగా ఎంత కీలకమైనదో కారణంగా దాదాపు అన్ని లక్షణాలు పనిచేస్తూనే ఉండాలి. ఈ మార్పిడి మొత్తం కొన్ని నెలల్లోనే పూర్తవ్వాలి, ఎటువంటి పనివిరామం ఉండకూడదు, కానీ దాన్ని ఎలా అమలు చేయాలనే దానిపై స్పష్టమైన ప్రణాళిక ఏదీ లేదు. అంతకుముందు నాకు Postgresతో పెద్దగా అనుభవం కూడా లేదు. అలాగే, నా సహోద్యోగులందరితో కలిసి, పెద్ద లెగసీ కోడ్బేస్ను NoSQL నుండి SQL డేటాబేస్కు మార్చడంలో నాకు ఎలాంటి అనుభవం లేదు.
3 - ఈ అనుభవం నుండి మీరు ఏమి నేర్చుకున్నారు
STMS కోడ్ను MongoDB నుండి Postgresకు ఎటువంటి పనివిరామం లేకుండా మార్చడం విజయవంతంగా పూర్తయింది, అదే సమయంలో దాదాపు అన్ని లక్షణాలు మరియు కార్యాచరణలను కొనసాగించగలిగాము. దీనికి విస్తృతమైన పరిశోధన, అభ్యాసం, పరీక్షలు మరియు సమస్యలను పరిష్కరించడం అవసరమయ్యాయి. రిలేషనల్ డేటాబేస్లతో మరింత సమర్థవంతంగా పనిచేసేలా మా డేటా నిర్మాణాలను పునర్వ్యవస్థీకరించాను మరియు Postgresతో అనుసంధానం కాని, మేము ఆధారపడిన ప్యాకేజీల స్థానంలో కొత్త ప్యాకేజీలను అభివృద్ధి చేశాను. మొత్తంగా, ఈ మార్పిడి ఎటువంటి నిజమైన లోపాలు లేకుండా సజావుగా పూర్తయింది, ఇది నా అంచనాలను మించిపోయింది. ఈ ప్రక్రియలో నేను చాలా నేర్చుకున్నాను. సాంకేతికంగా, Postgres, SQL, పార్స్ ట్రీలు, ORMలు, Sequelize, Prisma, క్వెరీ బిల్డర్లు, సమానత్వ తనిఖీ, ప్రైమరీ-స్టాండ్బై డేటాబేస్ అమరిక మరియు డేటాబేస్కు సంబంధించిన యూనిట్ టెస్టింగ్పై మెరుగైన అవగాహనను సంపాదించాను. ప్రాథమికంగా, ఒక సంక్లిష్టమైన సమస్యను చిన్న భాగాలుగా మరింత సమర్థవంతంగా విభజించి, ఆ భాగాలకు సమర్థవంతమైన పరిష్కారాలను అమలు చేయడం ఎలాగో నేర్చుకున్నాను. అదనంగా, అనేక పరిమితులు, అడ్డంకులు మరియు తెలియని అంశాలను ఎదుర్కొన్నప్పటికీ, నాయకుడిగా ఉండటం మరియు ఈ ప్రాజెక్టును ముగింపు వరకు నడిపించడం ఎలాగో నేర్చుకున్నాను.
4 - దాని ఫలితంగా మీరు ఎలా ఎదిగారు
నా అండర్గ్రాడ్యుయేట్ చదువుల సమయంలో రోబోటిక్స్లో నా వృత్తిని ప్రారంభించాను, కానీ eBayలో ఉద్యోగం వచ్చినప్పుడు వెబ్ అభివృద్ధి వైపు మళ్లాను. ఇంతకు ముందు ఎలాంటి అనుభవం లేని రంగంలోకి నేను ప్రవేశించాను. ఈ మార్పు నిరంతర అభ్యాసం మరియు అనుకూలతతో నిర్వచించబడిన వృత్తికి పునాది వేసింది. STMSను MongoDB నుండి Postgresకు మార్చే సవాలు నా వృత్తిలో ఒక ముఖ్యమైన ముందడుగు, ఇది నా వృత్తిపరమైన ఎదుగుదలకు ఎంతో దోహదపడింది. ఇది కేవలం డేటాబేస్లపై నా అవగాహనను లోతుగా చేసుకోవడం లేదా సమస్యలను పరిష్కరించే నా నైపుణ్యాలను మెరుగుపరచడం మాత్రమే కాదు. ఈ ప్రాజెక్టు నన్ను కొత్త ప్రాంతంలోకి నెట్టింది, సూక్ష్మమైన ప్రణాళికను మరియు ఎటువంటి పనివిరామం లేకుండా కొనసాగించాలనే నిబద్ధతను కోరింది. పెద్ద స్థాయి డేటాబేస్ మార్పిడుల్లో ఇంతకుముందు అనుభవం లేకుండానే ఈ మార్పిడికి నాయకత్వం వహిస్తూ, స్పష్టమైన సంభాషణ, బృందపని మరియు సంక్లిష్ట సవాళ్లను నిర్వహించగల భాగాలుగా విభజించడం యొక్క విలువను నేర్చుకున్నాను. ఈ అనుభవం నా సాంకేతిక నైపుణ్యాలను విస్తరించడమే కాకుండా, నా ఆత్మవిశ్వాసాన్ని కూడా పెంచింది. మరింత పెద్ద లక్ష్యాలు మరియు ప్రాజెక్టుల వైపు నన్ను నడిపించింది. నా వృత్తిలోని ఈ మైలురాయి డెవలపర్గా మరియు నాయకుడిగా మాత్రమే కాకుండా, సమస్యలను పరిష్కరించే వ్యక్తిగా కూడా నా ఎదుగుదలను చూపించింది. తెలియని పరిస్థితులను స్వీకరించి విజయవంతం కావడం వ్యక్తిగత మరియు వృత్తిపరమైన అభివృద్ధికి కీలకమని ఇది నిరూపించింది.
ముగింపు ఏమిటి?
నా సమాధానాల కారణంగా కంపెనీలోని ఇంటర్వ్యూ ప్రక్రియలోని రెండవ దశకు నేను ముందుకు వెళ్లాను. దాంతో ఆ బృందంలోని డెవలపర్లలో ఒకరితో ఆహ్లాదకరమైన సంభాషణ జరిపే అవకాశం కలిగింది, అది చాలా బాగుంది. అయితే, ప్రధానంగా, eBayలో పనిచేసిన సమయంలో నా వృత్తి జీవితంలో నేను పరిష్కరించిన అత్యంత సవాలుతో కూడిన సాంకేతిక సమస్యను పరిశీలించుకునే అవకాశం ఈ అసైన్మెంట్ నాకు కల్పించింది. డెవలపర్/ఇంజనీర్గా నా ఎదుగుదల గురించి ఆలోచించడానికి, కొత్త నైపుణ్యాలను అభివృద్ధి చేసుకోవడానికి మరియు సంక్లిష్ట సమస్యలకు అనుగుణంగా మారి వాటిని పరిష్కరించడంలో నా ఆత్మవిశ్వాసాన్ని పెంచుకోవడానికి ఇది నాకు సహాయపడింది.