আধুনিক আর এবং / বা পাইথন গ্রন্থাগারগুলি কি এসকিউএলকে অচল করে দেয়?


14

আমি একটি অফিসে কাজ করি যেখানে এসকিউএল সার্ভারটি ডেটা প্রক্রিয়াকরণ থেকে শুরু করে মুংগিং পর্যন্ত আমাদের যা কিছু করি তার মেরুদণ্ড। আমার সহকর্মী আগত তথ্যগুলিকে পদ্ধতিগতভাবে প্রক্রিয়াজাত করার জন্য জটিল ফাংশন এবং সঞ্চিত প্রক্রিয়াগুলি রচনায় দক্ষ হয় যাতে এটি মানক করা যায় এবং রিপোর্ট, ভিজ্যুয়ালাইজেশন এবং বিশ্লেষণ প্রকল্পগুলিতে কাজ করা যায়। এখানে শুরু করার আগে, এসকিউএল-এর সাথে আমার খুব সামান্য অভিজ্ঞতা ছিল, সর্বাধিক প্রাথমিকের কোয়েরিগুলি লিখে। আমার বিশ্লেষণের প্রস্তুতির বেশিরভাগ অংশই আর-তে সম্পন্ন হয়েছিল bo dplyr, data.table, এবং tidyr এর মতো প্যাকেজ (কয়েকটি নাম দেওয়ার জন্য)। আমার প্রশ্নটি - এটি কি কোনও অর্থবোধ করে?

কয়েক সপ্তাহ আগে, আমি একটি টেবিলে প্রতিটি সারির জন্য কলামের নামের একটি তালিকা পেয়েছি যা নির্দিষ্ট মানদণ্ডের সাথে মিলিত হয়েছিল এবং তাদেরকে স্ট্রিংয়ের ভেক্টর হিসাবে যুক্ত করে তুলতে পেরেছিলাম। একটি সংক্ষিপ্ত সময়সীমা ছিল এবং সেই সময় আমি কিছুটা বাধা পেয়েছিলাম এবং সমস্যার মুখটি বেশ ভালভাবে জড়িয়ে রাখতে পারি না। আমি আমার বসকে জিজ্ঞাসা করেছি, যারা আমার সহকর্মীকে সমস্যার সমাধানের জন্য একটি স্ক্রিপ্ট টিএসকিউএল লিখতে বলেছিলেন। তিনি যখন এটিতে কাজ করছিলেন, আমি আর এটি করার একটি উপায় খুঁজে পেয়েছিলাম মোটামুটি সহজ ফাংশন লিখতে এবং এটি ডেটা ফ্রেমের উপরে প্রয়োগ করে। আমার সহকর্মী তার স্ক্রিপ্টটি নিয়ে প্রায় দুই ঘন্টা পরে ফিরে আসেন। এটি লুপের জন্য দুটি নেস্টেড অন্তত 75 টি লাইন ছিল। এটি শেষ হয়ে যাওয়ার পরে আমি তাকে বিজ্ঞপ্তি দিতে বললাম এবং তিনি বলেছিলেন যে এটি কয়েক ঘন্টা সময় নেবে। ইতিমধ্যে আমার আর স্ক্রিপ্টটি প্রায় 30 সেকেন্ডের মধ্যে 45,000 ডলার রেকর্ডটি লুপ করতে সক্ষম হয়েছিল।

আমি কি ধরে নিচ্ছি যে ডেটা পরিষ্কার এবং মুং করার জন্য আর একটি আরও ভাল পছন্দ? আমার অফিসে এসকিউএল বিকাশকারী কি কেবল অদক্ষ? আমি আগ্রহী, যদি কে আর আর এসকিউএল (বা পাইথন এবং এসকিউএল উভয় ক্ষেত্রেই এই বিষয়ে কাজ করে) নিয়ে কাজ করে তবে সে সম্পর্কে কিছু চিন্তাভাবনা আছে।


2
যদি আপনার ডাটাবেস যথেষ্ট ছোট এবং স্থিতিশীল থাকে তবে আপনি এটিকে মেমরির মধ্যে লোড করতে এবং dplyr এর মতো আপনার পছন্দসই ETL সরঞ্জামটি ব্যবহার করতে পারেন। যখন আপনার মেঘে বড় ডেটা থাকবে তখন আপনার পদ্ধতির কাজটি কার্যকর হবে না। আমি নিয়মিত এমন ক্যোয়ারি চালাই যা বিগকিউরি (গুগল) অভিযোগ করে। আমি সরাসরি এসকিউএলে কোয়েরি লিখি তবে আমি চাইলে ডেটাফ্রেমে পরিচালনা করার জন্য স্পার্ককে মাঝারি স্তর হিসাবে ব্যবহার করতে পারি।
এমরে

1
সুতরাং এসকিউএল যেভাবে তথ্য সংরক্ষণ করা হয় তার নিরিখে আর এর চেয়েও বেশি দক্ষ, নাকি এসকিউএল সার্ভারগুলিতে আরও অন্তর্নির্মিত মেমরি এবং প্রসেসিং পাওয়ার থাকে?
আফ্যাবল্যাবলিং

1
আপনি কম্বল স্টেটমেন্ট দিতে পারবেন না - এটি বাস্তবায়নের উপর নির্ভর করে - তবে ভাল ডাটাবেসে কোয়েরি অপ্টিমাইজার রয়েছে এবং তাদের মধ্যে কিছু (বিগকুয়েরির মতো) মাল্টিকোর এক্সিকিউশন সমর্থন করে। হতে পারে আপনি যা চান তা এসকিউএল এড়াতে আপনার ডাটাবেসের শীর্ষে একটি ডেটাফ্রেম বা ওআরএম বিমূর্ততা। মনে হয় dplyr ইতিমধ্যে কিছুটা এই কাজটি করেছে (সিএফ। এসকিউএল অনুবাদ )। আপনি কাপি এসকিউএল এর বিপরীতে dplyr এ একই প্রশ্নটি বেঞ্চমার্ক করতে পারেন। কিছু যা করেন তা হ'ল প্রোটোটাইপিংয়ের জন্য ডেটার একটি ছোট নমুনা নেওয়া, তারপরে উত্পাদনের জন্য বড় ডেটা সরঞ্জামগুলি হুইপ করুন
এমরে

3
আপনি কেবল এসকিউএল সার্ভারের ভিতরে আর চালাতে পারেন এবং উভয় বিশ্বের সেরা থাকতে পারেন
গাইস

উত্তর:


13

আর এবং এসকিউএল দুটি সম্পূর্ণ ভিন্ন জন্তু। এসকিউএল হ'ল এমন একটি ভাষা যা আপনি ইতিমধ্যে অভিজ্ঞ হিসাবে ডাটাবেসে সঞ্চিত ডেটা ক্যোয়ারিতে ব্যবহার করতে পারেন। এসকিউএল বনাম আর এর সুবিধাগুলি বেশিরভাগ ডাটাবেস সার্ভারের (এমএস এসকিউএল, ওরাকল, পোস্টগ্রাইএসকিউএল, মাইএসকিউএল ইত্যাদি) দেয়।

বেশিরভাগ, না থাকলেও, আধুনিক ডাটাবেস সার্ভারগুলি একাধিক ব্যবহারকারীকে একই ডেটা উত্স থেকে ডেটা জিজ্ঞাসা করার অনুমতি দেয় এবং ডেটা ধারাবাহিক থাকে তা নিশ্চিত করে একই টেবিলে ডেটা সন্নিবেশ, আপডেট এবং মুছতে পারে। এটি একটি ব্যাংকের লেনদেন রেকর্ড করার জন্য প্রয়োজনীয়। আপনি কি আর-তে ব্যাঙ্ক চালানোর কথা ভাবতে পারেন? এটি যেখানে ডাটাবেস সার্ভারগুলি আসে They তারা ডাটাবেসে চালিত পদ্ধতিগুলির এসিডি বৈশিষ্ট্যগুলি নিশ্চিত করে। এসিডি হ'ল পারমাণবিকতা, একত্রীকরণ, বিচ্ছিন্নতা এবং স্থায়িত্ব ( উইকিপিডিয়ায় এসিডি বর্ণনাটি দেখুন )। আর একটি একক ব্যবহারকারী প্ল্যাটফর্ম যেখানে মেমরির মধ্যে সবকিছু ঘটে। সুতরাং, যদি আপনার কম্পিউটার একটি বৃহত ক্রিয়াকলাপের অর্ধেক কাজ বন্ধ করে দেয় তবে আপনার ডেটা সংরক্ষণ করা হবে না। আপনি একমাত্র ব্যক্তি যিনি ডেটা অ্যাক্সেস করতে পারবেন। স্পষ্টতই, আর-কে ডাটাবেস সার্ভার এবং / অথবা এসকিউএল এর বিকল্প হিসাবে বিবেচনা করা হয় না।

ডাটাবেস সার্ভারগুলির আর একটি প্রধান সুবিধা হ'ল একটি ভাল ডাটাবেস ডিজাইন নিশ্চিত করে যে আপনি কোয়েরি অপটিমাইজেশন সম্পাদন করে আপনার ডাটাবেসটিকে দ্রুত জিজ্ঞাসা করতে পারবেন। এই ডাটাবেস সার্ভারগুলি অর্জন করতে একটি সারণির নকশার উপর নজর রাখুন। এই বিষয়টির সম্পূর্ণ আলোচনার জন্য উইকির পৃষ্ঠাটি দেখুন । আর কোয়েরি অপ্টিমাইজেশন সম্পাদন করতে পারে না। দরিদ্র ডাটাবেস ডিজাইন, আপনার অনুসন্ধানগুলি ধীর করে কার্যকর করতে পারে। ডাটাবেস ডিজাইনে বিদেশী কীগুলি সঠিকভাবে ব্যবহার করা হয় তবে একাধিক টেবিলকে জিজ্ঞাসা করে এমন প্রশ্নের উপরেও ডাটাবেস সার্ভারগুলি অপ্টিমাইজেশন সম্পাদন করতে পারে।

এসকিউএল ভাষার একটি খুব আলাদা বাক্য গঠন রয়েছে এবং আমি আপনার অভিজ্ঞতাটি শেয়ার করি যে ডেটা টেবিল বা ডিপি্লায়ার সিনট্যাক্স ব্যবহার করে ডেটা মংগিং স্টেপগুলি লেখার চেয়ে খাটো। যাইহোক, কখনও কখনও আপনার ডেটা আর এর জন্য খুব বড় হয় বা আপনাকে পর্যায়ক্রমিক ব্যাচের কাজের অংশ হিসাবে ডাটাবেসে ফলাফল সংরক্ষণ করতে হবে, যার জন্য আপনার লজিককে এসকিউএল কোড করা প্রয়োজন।

আমার অভিজ্ঞতায় এসকিউএল এবং আর / পাইথনের জন্য নির্দিষ্ট ব্যবহারের কেস রয়েছে। এসকিউএল ব্যবসায়ের সমালোচনামূলক ডেটা সঞ্চয় করার জন্য এবং একাধিক লোককে কেন্দ্রীয় পরিবেশে ডেটা অ্যাক্সেস, সংশোধন, সন্নিবেশ এবং মোছার মঞ্জুরি দেওয়ার জন্য দুর্দান্ত। যে কোনও এক-অফ ডেটা মুগিংয়ের জন্য আর এবং পাইথন দুর্দান্ত। যদি আপনার ডেটা মংিংটি পর্যায়ক্রমে সম্পাদন করা প্রয়োজন, আপনাকে আপনার আর / পাইথন স্ক্রিপ্টটি এসকিউএলে পোর্ট করতে হবে।


3

এগুলি আসলে তুলনাযোগ্যও নয়। এসকিউএল একটি ভাষা যা ডেটা অ্যাক্সেসের জন্য বোঝানো হয়, আর ডেটা দিয়ে কাজ করার জন্য ভাষা বোঝানো একটি ভাষা।

এসকিউএল মুগিংয়ের জন্য কার্যকর সরঞ্জাম নয় কারণ মধ্যবর্তী পদক্ষেপগুলি দেখা শক্ত এবং যখন এটি ত্রুটি নিক্ষেপ করে তখন এটি আপনার ডেটার ফর্ম / গুণমান / কাঠামোর দিকে লক্ষ্য করার সম্ভাবনা নেই।

আমার কর্মপ্রবাহ সাধারণত:

  1. এসকিউএল কোয়েরি (আর মধ্যে) থেকে কাঁচা ডেটা পান
  2. মুগিংয়ের রুটিন তৈরি করুন
  3. যদি সম্ভব হয়, আর-তে মুগিংটি সম্পাদন করতে এসকিউএল কোয়েরিটি আবার লিখুন

এছাড়াও বুঝতে পারেন যে সমস্ত ডেটা গ্রাহক আর ব্যবহার করেন না, তবে অনেকে এখনও এসকিউএল ব্যবহার করে তাদের পছন্দসই প্ল্যাটফর্মটিকে ডেটা দিয়ে ইন্টারফেস করেন।


1
এটিই আমি একই প্রক্রিয়াটি অনুসরণ করি (আমার সুপারভাইজারের অপছন্দটি অনেকটা)। আমি সম্মত হই যে, উপরে বর্ণিত একটি জাতীয় জটিল কাজ সম্পাদন করা আর-এর মতো ভাষায় অনেক বেশি দক্ষতার সাথে করা হয়েছে বলে মনে হয় (নিশ্চিতকরণের প্রশংসা করুন)। তবে যদি এসকিউএল এর একমাত্র উদ্দেশ্যটি আপনার ডেটার জন্য একটি বিশাল হার্ড ড্রাইভ হয়, তবে কেন কেবল একটি আর সার্ভার নেই? দেখে মনে হচ্ছে যে সমস্ত ফাংশন (ম্যাপিং, টেবিলগুলি সংযুক্ত করার জন্য কী সেটআপ করা, গোষ্ঠীকরণ, এবং ডেটাতে যোগদান করা) এখন সব কিছু খুব কার্যকরভাবে আরে করা যেতে পারে a
আফ্যাবল্যাবলিং

1
@Noah কারণ সব মানুষ আর ব্যবহার
Heitz

2

লাইব্রেরি (ডিবিপি্লায়ার) এর সঠিক পদ্ধতির রয়েছে: আর-তে সমস্ত কিছু লিখুন (পরিপাটি ব্যবহার করে) এবং লাইব্রেরিটিকে কেবল সময়ে সময়ে আর কোডটি নিম্ন-স্তরের এসকিউএলে "সংকলন" করতে দিন।

যেহেতু সমস্ত মুগিং অনুবাদযোগ্য নয়, তাই অন্য একটি পন্থা হ'ল এসকিউএল সার্ভারের নেওয়া: এসকিউএল "সিলেক্ট" কমান্ড থেকে আর কোড স্নিপেটগুলিকে অনুরোধ করা যাক।


1

হাইট দ্বারা উল্লিখিত ১, ২, ৩. পদ্ধতিটি আমার অভিজ্ঞতার সাথে সম্ভাব্য 3. এর বিকল্পের সাথে প্রসারিত হবে যেখানে আপনি আর (ডেটা.ট্যাবল) থেকে আপনার ডেটা মাইএসকিউএলে লেখেন।

সুতরাং সম্পূর্ণ পদক্ষেপগুলি মাইএসকিউএল-> ডেটা.ট্যাবল-> মাইএসকিউএল

আপনি যদি নিশ্চিত করেন যে আপনি ডেটা.ট্যাবিল সিনট্যাক্স ব্যবহার করেন যেখানে আপনি ডিটি-র অনুলিপি করেন না তবে এটি র্যাম-বান্ধবও।


1

এক কথায় NOএসকিউএল হ'ল স্ট্রাকচার্ড আধা কাঠামোগত এমনকি কাঠামোগত ডেটা বর্ণনা করার ও সংক্ষিপ্তসার করার একটি শক্তিশালী সংক্ষিপ্ত এবং নমনীয় উপায় - যখন একটি উপযুক্ত দোভাষী লেয়ারটি তার উপরে স্থাপন করা হয়। যাইহোক sqlডেটা বিজ্ঞানীদের জন্য প্রায় আবশ্যক হিসাবে বিবেচিত হয়।

SQL এর মূল ক্রিয়াকলাপ সম্পাদনের জন্য একটি সংক্ষিপ্ত এবং শক্তিশালী উপায়:

  • অনুমান ( নির্বাচন করুন ..)
  • ফিল্টারিং ( যেখানে ..)
  • গোষ্ঠীবদ্ধ / (ফিল্টার করার দ্বারা গ্রুপ এবং থাকার )
  • প্রাথমিক সমষ্টি ( গণনা , যোগফল , গড় ..)
  • যোগদান করে

ইনলাইন ভিউগুলি ব্যবহার করে ফলাফলগুলিকে একত্রিত করার সময় আসল শক্তিটি আসে । যখন আমি কি করতে যে, আমি এক ব্যবহার করা হবে প্রয়োজন sqldf, pandasql, pysparkSql/ sparkSqlবা সরাসরি RDBMS সংযোগ নেই। সর্বাধিক সংক্ষিপ্ত পদ্ধতিতে একই সাথে লেখার সাথে data.table(অনেক বেশি ভাল data.frame) বা datatable(এর চেয়ে ভাল pandas) চেষ্টা করা প্রশ্নের জটিলতার উপর নির্ভর করে এখনও আরও আটকানো, আরও বেশি ছোঁয়াচে বা প্রায় অসম্ভব।

ডেটা মংগিংয়ের জন্য : এটি একটি আলাদা গল্প: কিছু ক্রিয়াকলাপগুলি সহজেই স্কোলে প্রকাশিত হয় এবং কিছু কিছু এত বেশি হয় না। তবে আপনি যখন এটি অন্তর্ভুক্ত করবেন তখন UDFকী অর্জন করা যায় তার বিস্তৃত অক্ষাংশ রয়েছে। আমার বর্তমান কার্যটিতে UDFগ্রাহক ছেদ অপারেশন, কাস্টম সংহতকরণ এবং কাস্টম স্কোরিং পদ্ধতিগুলির মতো কাজগুলি করতে বেশ কয়েকটি গুলি অন্তর্ভুক্ত রয়েছে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.