অসংখ্য ডাটাবেস বিমূর্ত স্তরগুলির সংস্পর্শে আসার পরে, আমি ভাবতে শুরু করি যে প্রতিটি লাইব্রেরির ডেটা অ্যাক্সেসের জন্য তাদের নিজস্ব দৃষ্টান্ত আবিষ্কার করার মূল বিষয়টি কী। একটি নতুন ডাল তুলে নেওয়া আবার নতুন করে ভাষা শেখার মতো মনে হয়, যখন সাধারণত আমি যা করতে চাই তা কেবলমাত্র একটি এসকিউএল কোয়েরি আউটপুট করতে স্তরকে বোঝায় যা আমি ইতিমধ্যে আমার মাথায় লিখে রেখেছি।
এবং এটি এমনকি সত্যতার পরে পঠনযোগ্যতার উপর স্পর্শ ছাড়াই:
# Exhibit A: A typical DAL
rows = db(db.ips_x_users.ip_addr == '127.0.0.1')
.inner_join(db.ips_x_users.user_id == db.users.id)
.select(order=(db.ips_x_users.last_seen, 'desc'), limit=10)
# Exhibit B: Another typical DAL
rows = db.ips_x_users
.join(db.users, on=db.ips_x_users.user_id == db.users.id)
.filter(db.ips_x_users.ip_addr == '127.0.0.1')
.select(sort=~db.ips_x_users, limit=10)
# Exhibit C: A hypothetical DAL based on standard SQL syntax
rows = db('''SELECT * FROM ips_x_users
INNER JOIN users ON
(ips_x_users.user_id = users.id)
WHERE ips_x_users.ip_addr = ip
ORDER BY last_seen DESC LIMIT 10''', ip='127.0.0.1')
স্ট্যান্ডার্ড এসকিউএল সিনট্যাক্সে কী সমস্যা? এটি একটি নির্দিষ্ট উদ্দেশ্যে তৈরি করা হয়েছিল এবং এটি সেই উদ্দেশ্যে সুন্দরভাবে ফিট করে। সম্ভবত এটি কেবল আমিই, তবে আমি স্নিপেট সি প্রথম দুটি তুলনায় আরও সহজেই বুঝতে পারি। নামকরণকৃত কীওয়ার্ডগুলি এবং বাক্য গঠনগুলি কৌশলগুলি দুর্দান্ত, কিন্তু আইএমও, যখন এটি ঠিক নীচে আসে, তারা কোডরের পক্ষে সারিগুলি পুনরুদ্ধার করা সহজতর করে না।
এটি সম্ভবত একটি দীর্ঘ গলাবাজি ভালো লাগে, কিন্তু হয় এখানে একটি বাস্তব প্রশ্ন। যেহেতু প্রতিটি ডএল চেষ্টা করে-এবং-সত্য এসকিউএলকে বিশ্লেষণ করার পরিবর্তে প্রশ্নের জন্য নতুন ডিএসএল আবিষ্কার করছে বলে মনে হচ্ছে যে, আলাদা আলাদা সিনট্যাক্স ব্যবহারের সুবিধা থাকতে হবে, বা আমি বুঝতে পারি না এমন স্ট্যান্ডার্ড এসকিউএল সিনট্যাক্সের ঘাটতি রয়েছে। কেউ কি দয়া করে এখানে আমি কী দেখছি তা চিহ্নিত করতে পারেন?