( ইন-মেমরি পোস্টগ্র্রেএসকিউএল ব্যবহার করে এবং এটি জেনারালাইজেশন করা থেকে আমার উত্তর সরানো ):
আপনি মেমরি-ইন-প্রসেস পিজি চালাতে পারবেন না
আমি পরীক্ষার জন্য কীভাবে মেমরি পোস্টগ্রিস ডাটাবেস চালাতে পারি তা বুঝতে পারি না। এটা কি সম্ভব?
না, এটা সম্ভব নয়। পোস্টগ্রিএসকিউএল সি তে প্রয়োগ করা হয় এবং প্ল্যাটফর্ম কোডে সংকলিত হয়। এইচ 2 বা ডার্বির বিপরীতে আপনি কেবল jar
মেমোরি ডিবি হিসাবে নিক্ষেপকারী হিসাবে লোড করতে এবং এটি জ্বালিয়ে দিতে পারবেন না ।
এসকিউএলাইটের বিপরীতে, যা সিতেও লেখা হয় এবং প্ল্যাটফর্ম কোডে সংকলিত হয়, পোস্টগ্রেএসকিউএল কোনওভাবে প্রসেসে লোড করা যায় না। এটির জন্য একাধিক প্রক্রিয়া প্রয়োজন (প্রতি সংযোগে একটি) কারণ এটি একটি মাল্টিপ্রসেসিং, মাল্টিথ্রেডিং নয়, আর্কিটেকচার। মাল্টিপ্রসেসিং প্রয়োজনীয়তার অর্থ আপনাকে অবশ্যই পোস্টমাস্টারকে স্ট্যান্ডেলোন প্রক্রিয়া হিসাবে চালু করতে হবে ।
পরিবর্তে: একটি সংযোগ প্রাক কনফিগার করুন
আমি নির্দিষ্টভাবে আপনার হোস্টনাম / ব্যবহারকারীর নাম / পাসওয়ার্ডটি কাজ করার আশা করার জন্য আপনার পরীক্ষাগুলি লেখার পরামর্শ দিচ্ছি এবং পরীক্ষাটি চালানোর CREATE DATABASE
পরে একটি ছুটে যাওয়া ডেটাবেস, তারপরে DROP DATABASE
রান শেষে। একটি বৈশিষ্ট্য ফাইল থেকে ডাটাবেস সংযোগের বিশদটি পান, লক্ষ্য বৈশিষ্ট্য তৈরি করুন, পরিবেশের পরিবর্তনশীল ইত্যাদি vari
আপনার ইতিমধ্যে আপনার যত্ন নেওয়া ডেটাবেস রয়েছে এমন একটি বিদ্যমান পোস্টগ্রিএসকিউএল উদাহরণ ব্যবহার করা নিরাপদ, যতক্ষণ আপনি আপনার ইউনিট পরীক্ষাগুলিতে সরবরাহ করেন সেই ব্যবহারকারী কোনও সুপারভাইজার না হন , কেবল CREATEDB
অধিকারের ব্যবহারকারী । সবচেয়ে খারাপ আপনি অন্যান্য ডাটাবেসে পারফরম্যান্স সমস্যা তৈরি করতে হবে। আমি সেই কারণে পরীক্ষার জন্য সম্পূর্ণ বিচ্ছিন্ন পোস্টগ্র্যাস এসকিউএল ইনস্টল চালানো পছন্দ করি।
পরিবর্তে: পরীক্ষার জন্য একটি নিক্ষেপ পোস্টগ্র্রেএসকিউএল উদাহরণ চালু করুন
অথবা, যদি আপনি করছি সত্যিই পছন্দ করা আপনি করতে পারে আছে আপনার পরীক্ষার সাজ সনাক্ত initdb
এবং postgres
বাইনেরিতে, চালানো initdb
একটি ডাটাবেস তৈরি করতে, সংশোধন pg_hba.conf
করতে trust
, চালানো postgres
একটি র্যান্ডম পোর্টে এটা শুরু করার জন্য, একটি ব্যবহারকারী তৈরি, একটি ডিবি তৈরি, এবং পরীক্ষা সঞ্চালিত হবে । এমনকি আপনি জারে একাধিক আর্কিটেকচারের জন্য পোস্টগ্রাইএসকিউএল বাইনারিগুলি বান্ডিল করতে পারেন এবং পরীক্ষাগুলি চালানোর আগে বর্তমান স্থাপত্যের জন্য একটি অস্থায়ী ডিরেক্টরিতে আনপ্যাক করতে পারেন।
ব্যক্তিগতভাবে আমি মনে করি এটি একটি প্রধান ব্যথা যা এড়ানো উচিত; এটি কেবল একটি পরীক্ষা ডিবি কনফিগার করা সহজ। যাইহোক, include_dir
সমর্থনের আগমনের সাথে এটি কিছুটা সহজ হয়ে গেছে postgresql.conf
; এখন আপনি কেবল একটি লাইন যুক্ত করতে পারেন, তারপরে বাকী সমস্তগুলির জন্য একটি উত্পন্ন কনফিগারেশন ফাইল লিখুন।
পোস্টগ্রিসএসকিউএল সহ দ্রুত পরীক্ষা করা
পরীক্ষার উদ্দেশ্যে পোস্টগ্র্রেএসকিউএল এর কার্যকারিতা নিরাপদে কীভাবে উন্নত করা যায় সে সম্পর্কে আরও তথ্যের জন্য, আমি এই বিষয়ে আগে এই বিষয়ে লিখেছিলাম একটি বিস্তারিত উত্তর দেখুন: দ্রুত পরীক্ষার জন্য পোস্টগ্র্রেএসকিউএল অনুকূলিত করুন
এইচ 2 এর পোস্টগ্রিসএসকিউএল উপভাষাটি সত্যিকারের বিকল্প নয়
কিছু লোক পরিবর্তে পরীক্ষা চালানোর জন্য পোস্টগ্র্রেএসকিউএল ডায়ালেক্ট মোডে এইচ 2 ডাটাবেস ব্যবহার করে। আমি মনে করি এটি রেল লোকেরা যেমন এসকিউএলাইট পরীক্ষার জন্য এবং পোস্টগ্র্রেএসকিউএল উত্পাদন স্থাপনের জন্য ব্যবহার করে ততটা খারাপ।
এইচ 2 কিছু পোস্টগ্রিসকিউএল এক্সটেনশান সমর্থন করে এবং পোস্টগ্রেএসকিউএল ডায়ালিট অনুকরণ করে। যাইহোক, এটি ঠিক - একটি অনুকরণ। আপনি এমন অঞ্চলগুলি খুঁজে পাবেন যেখানে এইচ 2 কোনও জিজ্ঞাসা গ্রহণ করে কিন্তু পোস্টগ্র্যাসকিউএল দেয় না, যেখানে আচরণের পার্থক্য রয়েছে ইত্যাদি ইত্যাদি । আপনি লেখার সময় উইন্ডো ফাংশনগুলির মতো - পোস্টগ্র্রেএসকিউএল এমন কোনও কিছু করার পক্ষে সমর্থন করেন যেখানে পোস্টগ্রাইএসকিউএল সমর্থন করে of
আপনি যদি এই পদ্ধতির সীমাবদ্ধতা বুঝতে এবং আপনার ডাটাবেস অ্যাক্সেস সহজ হয় তবে H2 ঠিক আছে। তবে সেক্ষেত্রে আপনি সম্ভবত কোনও ওআরএমের জন্য আরও ভাল প্রার্থী যা ডাটাবেসটিকে বিমূর্ত করে দেয় কারণ আপনি যেভাবেই এর আকর্ষণীয় বৈশিষ্ট্যগুলি ব্যবহার করছেন না - এবং সেই ক্ষেত্রে আপনাকে আর ডাটাবেসের সামঞ্জস্যতা নিয়ে যত্ন নেওয়ার দরকার নেই।
টেবিল স্পেসের উত্তর নয়!
"ইন-মেমরি" ডাটাবেস তৈরি করতে কোনও টেবিল স্পেস ব্যবহার করবেন না । এটি যেভাবেই পারফরম্যান্সকে উল্লেখযোগ্যভাবে সহায়তা করবে না কেবল এটি অপ্রয়োজনীয়ই নয়, একই পোস্টগ্রিসকিউএল ইনস্টল করে আপনার যত্ন নেওয়া অন্য যে কোনও অ্যাক্সেস ব্যাহত করার এটিও দুর্দান্ত উপায়। 9.4 ডকুমেন্টেশনে এখন নিম্নলিখিত সতর্কতা রয়েছে :
সতর্কতা
যদিও মূল পোস্টগ্রেএসকিউএল ডেটা ডিরেক্টরির বাইরে থাকা সত্ত্বেও, টেবিল স্পেসগুলি ডাটাবেস ক্লাস্টারের একটি অবিচ্ছেদ্য অঙ্গ এবং ডেটা ফাইলগুলির স্বায়ত্তশাসিত সংগ্রহ হিসাবে বিবেচনা করা যায় না। এগুলি মূল ডেটা ডিরেক্টরিতে থাকা মেটাডেটার উপর নির্ভরশীল এবং তাই আলাদা আলাদা ডাটাবেস ক্লাস্টারের সাথে সংযুক্ত বা পৃথকভাবে ব্যাক আপ করা যায় না। একইভাবে, আপনি যদি কোনও টেবিলস্পেস (ফাইল মোছা, ডিস্ক ব্যর্থতা ইত্যাদি) হারিয়ে ফেলেন তবে ডাটাবেস ক্লাস্টারটি অপঠনযোগ্য বা শুরু করতে অক্ষম হতে পারে। র্যামডিস্কের মতো অস্থায়ী ফাইল সিস্টেমে একটি টেবিলস্পেস স্থাপন করা পুরো ক্লাস্টারের বিশ্বাসযোগ্যতা ঝুঁকিপূর্ণ করে তোলে।
কারণ আমি লক্ষ্য করেছি যে অনেক লোক এটি করছে এবং সমস্যায় পড়েছে।
(আপনি যদি mkdir
এটি করেন তবে পোস্টগ্রিএসকিউএল আবার শুরু করার জন্য আপনি টেবিল স্পেস ডিরেক্টরিটি অনুপস্থিত রাখতে পারেন, তারপরে DROP
অনুপস্থিত ডাটাবেস, টেবিল ইত্যাদি, এটি না করা ভাল))