எனது தரவுத்தளம் (database) என்னிடம் பொய் சொல்கிறது என்பதைப் புரிந்துகொள்வதற்கு முன்பு, ஒப்பீட்டு அட்டவணைகளை (comparison tables) உருவாக்க நான் பல மாதங்களைச் செலவிட்டேன்.

இடைமுகம் (interface) நன்றாகத் தெரிந்தது. சுத்தமான வரிசைகள், நேர்த்தியான சரிபார்ப்பு குறிகள், ஒரு கருவி பற்றாக்குறையாக இருக்கும் இடங்களில் சிவப்பு 'X' குறிகள். பார்வையாளர்கள் அவற்றைப் பார்த்துவிட்டு அவ்வப்போது கிளிக் செய்தனர். ஆனால், அதன் மேற்பரப்பிற்கு அடியில், தரவு அமைப்பு (schema) ஒவ்வொரு முடிவையும் அமைதியாகச் சிதைத்துக் கொண்டிருந்தது. மோசமான தரத்தின் மேல் நான் ஒரு அழகான பயனர் இடைமுகத்தை (UI) உருவாக்கியிருந்தேன்.

பூலியன் பொறி (The Boolean Trap)

ஒப்பீட்டுப் பக்கங்கள் பொதுவாக ஒரு தெளிவான முறையுடன் தொடங்கும். வரிசைகள் அம்சங்களாகவும் (features), நிரல்கள் (columns) தயாரிப்புகளாகவும் இருக்கும் ஒரு கட்டத்தை (grid) நீங்கள் உருவாக்குகிறீர்கள், மேலும் ஒவ்வொரு செல்லிலும் ஒரு பூலியன் (boolean) மதிப்பு இருக்கும். 'True' என்பது அந்த கருவி அந்த அம்சத்தைக் கொண்டுள்ளது என்று பொருள்படும். 'False' என்பது அது இல்லை என்று பொருள்படும். ஒரு கட்டத்தில் இது ஒழுங்கானதாகத் தோன்றும். ஆனால், நீங்கள் இரண்டு திட்ட மேலாண்மை கருவிகளை (project management tools), அல்லது மூன்று கிளவுட் தரவுத்தளங்களை (cloud databases), அல்லது நான்கு API கேட்வேகளை (API gateways) ஒப்பிட முயலும்போது, அந்த கட்டம் கிளர்ச்சி செய்யத் தொடங்கும்.

பூலியன் செல்கள் நுணுக்கங்களைக் கொண்டு செல்ல முடியாது. ஒரு செல் 'false' என்று காட்டும்போது, அது ஐந்து முற்றிலும் மாறுபட்ட விஷயங்களைக் குறிக்கலாம். ஒருவேளை அந்த கருவி உண்மையில் அந்தத் திறனைக் கொண்டிருக்காமல் இருக்கலாம். ஒருவேளை அது அதே சிக்கலை ஒரு வேறுபட்ட வழிமுறையின் மூலம் தீர்க்கலாம். ஒருவேளை அந்த அம்சம் இருக்கலாம், ஆனால் அது நிறுவனங்களுக்கான கட்டணத் திட்டத்திற்கு (enterprise paywall) பின்னால் இருக்கலாம். ஒருவேளை நீங்கள் கவனிக்காத ஒரு பிளகின் (plugin) அதற்குத் தேவைப்படலாம். அல்லது நீங்கள் அதைச் சரிபார்க்க மறந்துவிட்டிருக்கலாம், அந்தச் சிவப்பு 'X' என்பது உங்கள் சொந்த நிச்சயமற்ற தன்மைக்கான ஒரு இடத்தைப் பிடிக்கும் குறியீடாக இருக்கலாம்.

இது முக்கியமானது, ஏனெனில் பயனர்கள் விலை உயர்ந்த முடிவுகளை எடுக்க ஒப்பீட்டு அட்டவணைகளை நம்புகிறார்கள். ஒரு CLI சார்ந்த கருவி நிகழ்நேர ஒத்துழைப்பைக் (real-time collaboration) கொண்டிருக்கவில்லை என்று நீங்கள் குறிப்பிடும்போது, அதற்கு நேரடி கர்சர் பகிர்வு (live cursor sharing) இல்லை என்று நீங்கள் நினைக்கலாம். ஆனால் அதே கருவி அதே முடிவைப் பெற பிரான்ச் சார்ந்த பணிப்பாய்வுகள் (branch-based workflows) மற்றும் மதிப்பாய்வு வரிசைகளை (review queues) பயன்படுத்தக்கூடும். அதை 'false' என்று குறிப்பிடுவது ஒரு வடிவமைப்புத் தேர்வை (design choice) ஒரு குறைபாடாக மாற்றுகிறது. இருபது அம்சங்களுக்கு இப்படிச் செய்தால், நீங்கள் இரண்டு கருவிகளை ஒப்பிடவில்லை; மாறாக அவற்றில் ஒன்றைச் செயலிழந்தது என்று அறிவிக்கிறீர்கள்.

ஒரு பூலியன் ஸ்கீமா (boolean schema) பயனர் தேவைகளுக்குப் பதிலாக விற்பனையாளரின் சொற்களஞ்சியத்தில் (vendor vocabulary) சிந்திக்க உங்களைத் தூண்டுகிறது. உங்கள் வரிசைகள் சந்தையின் முன்னணியில் உள்ள நிறுவனத்தின் பெயர்களைக் கடன் வாங்கினால், Notion 'Workspaces' என்று அழைப்பதால், மற்ற போட்டியாளர்களுக்கும் 'Workspaces' இருக்கிறதா என்று நீங்கள் கேட்க நேரிடும். மற்றொரு கருவி அதை 'Projects' என்று அழைக்கும். மூன்றாவது கருவி இதற்கெனத் தனிப்பயனாக்கப்பட்ட கொள்கலக்கத்தையே (container) வைத்திருக்காது, ஆனால் நீங்கள் அதே தனிமைப்படுத்தலை (isolation) அடையும் வரை தனிப்பட்ட கோப்புகளுக்கு அனுமதி (permission) வழங்க அனுமதிக்கலாம். உங்கள் வரிசைப் பெயர்கள் ஒவ்வொரு தயாரிப்பையும் சந்தையின் ஜாம்பவானின் மன மாதிரியில் (mental model) திணிக்கின்றன, இது அந்த நிறுவனத்திற்கு வசதியாகவும் மற்ற அனைவருக்கும் அநீதியாகவும் அமைகிறது.

நிலைகளுக்கான சிறந்த சொற்களஞ்சியம்

இதற்கான தீர்வு தரவு வகையிலிருந்தே (data type) தொடங்குகிறது. பூலியன்களைச் சேமிப்பதை நிறுத்துங்கள். தெளிவான சொற்களஞ்சியத்துடன் கூடிய ஒரு நிலைத் புலத்தை (status field) சேமிக்கவும்.

இந்த ஆறு நிலைகளைக் கருத்தில் கொள்ளுங்கள்.

Full என்பது அந்த கருவி கூடுதல் மாற்று வழிகள் (workarounds) அல்லது கூடுதல் கொள்முதல் இன்றி வேலையைச் செய்கிறது என்று பொருள்படும்.

Partial என்பது அது வேலையின் சில பகுதியைச் செய்கிறது அல்லது ஏதோ ஒரு சிக்கலான அமைப்பை (arcane configuration) நீங்கள் செய்த பின்னரே செய்கிறது என்று பொருள்படும். பெரும்பாலான ஒப்பீடுகள் இங்குதான் துல்லியமற்ற தன்மையைக் மறைக்கின்றன. என்க்ரிப்ஷன் (encryption) வழங்கினாலும், அது 'at rest' நிலையில் மட்டுமே இருந்தால், அதற்கு 'Full' என்பதற்குப் பதிலாக 'Partial' என்பதே பொருத்தமானது.

Different Model என்பது அந்தப் பிரச்சனை தீர்க்கப்படுகிறது, ஆனால் சந்தையின் முன்னணியில் உள்ள நிறுவனம் தீர்க்கும் முறையிலல்ல என்று பொருள்படும். பிரான்ச்சுகள் மற்றும் மதிப்பாய்வுகளைக் கொண்ட CLI கருவி இங்கு வரும். அதேபோல், ஒற்றை இணைப்பிற்குப் பதிலாக ரீட் ரெப்ளிகாக்களைப் (read replicas) பயன்படுத்தும் தரவுத்தளமும் இங்கு வரும். இந்த நிலை, ஒரு போட்டியாளரைப் போலச் செயல்படாததற்காக ஒரு தயாரிப்பின் வடிவமைப்பைக் கறைபடச் செய்யாமல், அதன் புத்திசாலித்தனத்தைப் பாதுகாக்கிறது.

Not Applicable என்பது அந்தத் தத்துவம் இந்த வகையான கருவிக்கு பொருந்தாது என்று பொருள்படும். ஒரு விர்ச்சுவல் மெஷின் (virtual machine) போல ஒரு சர்வர்லெஸ் ஃபங்ஷன் பிளாட்ஃபார்மிற்கு (serverless function platform) நிலையான உள்ளூர் சேமிப்பு (persistent local storage) தேவையில்லை. அங்கு 'false' என்று குறிப்பிடுவது வகை குழப்பத்தை (category confusion) ஏற்படுத்தும்.

Absent என்பது நீங்கள் தேடிப் பார்த்தீர்கள், அந்தத் திறன் உண்மையில் இல்லை என்று பொருள்படும். அங்கு எந்த மாற்று வழியும், பிளகினும், மாற்றுப் பணிப்பாய்வும் இல்லை. அந்த இடைவெளி உண்மையானது.

Unknown என்பது நீங்கள் அதைச் சரிபார்க்கவில்லை என்று பொருள்படும்.