আমার দৃশ্যের জন্য কোন ডেটা স্টোর সবচেয়ে ভাল?


10

আমি এমন একটি অ্যাপ্লিকেশন নিয়ে কাজ করছি যা ডেটাবেসে আপডেট / সিলেক্ট কোয়েরিগুলির খুব উচ্চতর কার্যকর করা জড়িত।

আমার একটি বেস টেবিল (এ) রয়েছে যা এক দিনের জন্য সত্তার জন্য প্রায় 500 রেকর্ড থাকবে। এবং সিস্টেমে প্রতিটি ব্যবহারকারীর জন্য, ব্যবহারকারীর কিছু পছন্দ অনুসারে এই সত্তার বিভিন্নতা তৈরি করা হয় এবং সেগুলি অন্য সারণীতে (বি) সঞ্চিত থাকে। এটি একটি ক্রোন জব দ্বারা করা হয় যা প্রতিদিন মধ্যরাতে চলে।

সুতরাং যদি টেবিল এ তে 10,000 ব্যবহারকারী এবং 500 টি রেকর্ড থাকে তবে সেদিনের জন্য টেবিল বিতে 5 এম রেকর্ড থাকবে। আমি এই টেবিলে সর্বদা এক দিনের জন্য ডেটা রাখি এবং মধ্যরাতে আমি এইচবিজে historicalতিহাসিক ডেটা সংরক্ষণ করি। এই সেটআপটি ঠিকঠাক কাজ করছে এবং আমার এখন পর্যন্ত কোনও পারফরম্যান্স সমস্যা নেই।

ইদানীং ব্যবসায়ের প্রয়োজনীয়তায় কিছু পরিবর্তন হয়েছে এবং এখন বেস টেবিল এ এর ​​কয়েকটি বৈশিষ্ট্য (15 - 20 রেকর্ডের জন্য) প্রতি 20 সেকেন্ডে পরিবর্তিত হবে এবং তার ভিত্তিতে আমাকে টেবিল বিতে এই সমস্ত পরিবর্তনের রেকর্ডের জন্য কিছু মানগুলি পুনরায় গণনা করতে হবে based সকল ব্যবহারকারী. যদিও কেবল ২০ টি মাস্টার রেকর্ড পরিবর্তন হয়েছে, আমার পুনরায় গণনা করতে হবে এবং 200,000 ব্যবহারকারীর রেকর্ড আপডেট করতে হবে যা 20 সেকেন্ডেরও বেশি সময় নেয় এবং তারপরে পরবর্তী আপডেটটি অবশেষে দেখা দেয় ফলস্বরূপ সমস্ত সিলেক্ট ক্যোয়ারী সারি করে রাখা হবে। আমি অনলাইন ব্যবহারকারীদের কাছ থেকে প্রায় 3 অনুরোধ / 5 সেকেন্ড পাচ্ছি যা ফলাফলগুলি 6-9 নির্বাচন করে ফলাফল নির্বাচন করে। একটি এপিআইয়ের অনুরোধের প্রতিক্রিয়া জানাতে, আমি সর্বদা সারণি বিতে ক্ষেত্রগুলি ব্যবহার করি

আমি আরও প্রসেসিং শক্তি কিনতে পারি এবং এই পরিস্থিতি সমাধান করতে পারি তবে আমি সঠিকভাবে স্কেলড সিস্টেমটি পেতে আগ্রহী যা এমনকি দশ মিলিয়ন ব্যবহারকারীকে পরিচালনা করতে পারে।

এখানে কেউ আরও ভাল বিকল্প প্রস্তাব করতে পারেন? Nosql + রিলেশনাল ডাটাবেস কি আমাকে এখানে সহায়তা করে? এমন কোনও প্ল্যাটফর্ম / ডাটাস্টোর রয়েছে যা আমাকে লক না করেই প্রায়শই ডেটা আপডেট করতে দেয় এবং একই সাথে আমাকে কোনও সত্তায় বিভিন্ন ক্ষেত্রে নির্বাচিত প্রশ্নগুলি চালনার নমনীয়তা দেয়?


আপনার কি সত্যিই সেই সমস্ত ডেটা সংরক্ষণ করার দরকার আছে? এটি একরকম শোনাচ্ছে যেন আপনি অনুরোধে গণনা করা ভাল be আপনি যদি 200 কে রেকর্ডগুলি 20 সেকেন্ডেরও বেশি কিছু ক্ষেত্রে গণনা করতে পারেন তবে সেই 20 টি রেকর্ড * 3 ব্যবহারকারী = 60 টি রেকর্ড কোনও সময়েই গণনা করা সম্ভব হবে। সম্ভবত আপনি দেখতে পাবেন কোন ব্যবহারকারীরা কোন সময়ে অনলাইনে আছেন এবং আরও বেশি অনুকূলিত করতে পারেন? কিছুটা দেখে মনে হচ্ছে আপনি প্রচুর পরিমাণে ডেটা তৈরি করছেন যা কেউ কখনও ব্যবহার করেন না (সেই সময়ে ডেটাটি কমপক্ষে কার্যকর হলেও কার্যকর হবে)
Thorsten müller

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

@ জগস - এটি এখনও আপনি উড়ে যাওয়ার জন্য গণনা করতে পারবেন কিনা এই প্রশ্নটি ছেড়ে দেয়। আপনার কি রেকর্ডগুলি আপডেট করতে হবে, বা আপনার অ্যাপ্লিকেশনটিতে কেবল ডেটা থাকা দরকার?
ববসন

আমি আশঙ্কা করছি যে আমি এন্ট্রি টেবিল বি ব্যবহারকারীর জন্য নির্ধারিত হয়েছি (ফ্লাইট 1 স্টার মাধ্যমে 5 তারা) এবং এই গণনাগুলি সম্পন্ন হওয়ার পরে আমরা আবার ব্যবহারকারীর জন্য র‌্যাঙ্কিং করি না the কোনও ব্যবহারকারীর পুরো প্রক্রিয়াটি 500 ম্যাসেক লাগে এবং আমি যদি উড়ন্ত অবস্থায় এটি করি তবে এটি আমাদের API প্রতিক্রিয়ার সময়কে প্রভাবিত করবে
Jugs

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

উত্তর:


1

দেখে মনে হচ্ছে টেবিলটি Bএকরকম ক্যাশে। তবে সেই ধরণের ক্যাশে যা উত্পাদনশীলতা হ্রাস করে ..

এমনকি যদি আপনার প্রতি সেকেন্ডে 25 টি প্রশ্ন থাকে সারণির ব্যবহার প্রত্যাখ্যান করতে পারেনB এবং প্রতিটি অনুরোধের জন্য উত্তর গণনা করতে পারেন।

যাইহোক , যদি আপনার 20 টি রেকর্ড আপডেট করার ক্ষেত্রে 30 সেকেন্ড বিলম্ব হয় - এটি কোনও সফ্টওয়্যার আর্কিটেকচারে ব্যর্থ (আমি ভুল, যদি আপনার ডিবি প্রতিটি রেকর্ডের জন্য পিআই এর প্রথম 10 ^ 100 লক্ষণ গণনা করে)।

আমি জানি, কুরুচিপূর্ণ এসকিউএল-কোয়েরি ছাড়া সূচকগুলি এবং 1 000 000 এরও কম রেকর্ড সহ রিলেশনাল ডিবি প্রায় সকল প্রশ্নের জন্য নিখুঁতভাবে কাজ করবে।

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


1

প্রশ্নটি আসলেই সিস্টেমটি বিতে intoোকানোর জন্য রেকর্ড এবং বি ডেটার আকারের গণনা করে।

যে কোনও ডাটাবেস (উদাঃ এমএসএসকিউএল) আপনি যে সমস্যাটি নিয়ে কথা বলছেন সেটির ভলিউমটি বিশাল নয় বলে ধরে রাখার পরিমাণটি পরিচালনা করতে সক্ষম হওয়া উচিত।

আপডেটগুলি আরও বেশি সমস্যাযুক্ত হতে পারে তবে সঠিক সূচক এবং লকিংয়ের সাথে আবার কোনও বড় সমস্যা হওয়া উচিত নয়।

99% সময় যখন আমি এর মতো সমস্যা দেখি কারণ এটি একটি রঞ্চিত সংরক্ষণের দ্বারা বি রেকর্ড গণনা করা হয়। এটি সমস্ত লোকে ডিবি সার্ভারে রাখে

যদি এটি হয় তবে সমাধানটি হ'ল এই কোডটি একটি অফলাইন পরিষেবাতে স্থানান্তর করা যা কুইউটিং সিস্টেমের মাধ্যমে কল করা যেতে পারে।

সুতরাং আপনার আপডেট একটি বার্তা একটি কর্মী প্রক্রিয়া ট্রিগার করবে যা ব্যবহারকারীদের মধ্য থেকে লুপ করবে এবং প্রতিটি ব্যবহারকারীর জন্য একটি আপডেট বি বার্তা তৈরি করবে

দ্বিতীয় কর্মী প্রক্রিয়া বি ডেটা সহ আপডেট ইউজার এক্সটিকে পিকআপ করবে একটি ইভেন্ট বি রেকর্ড তৈরি করবে এবং ডিবি আপডেট করবে

এটির উপর সারি কর্মী সহ আরও বাক্স যুক্ত করে এটি ছোট করে তোলা যেতে পারে, যাতে আপনার ডিবি আপডেট এবং নির্বাচনগুলিতে মনোনিবেশ করতে মুক্ত করে গণনার পিছনে আরও বেশি প্রসেসিং শক্তি থাকে।

আপনি বাছাইগুলি আপডেট / সন্নিবেশ থেকে আলাদা করে আরও অনুকূল করতে পারেন। একটি নতুন ডিবি রয়েছে যা পুরানো ডিবি প্রতিলিপি দাস হিসাবে সমস্ত নির্বাচিত অনুরোধ পেয়েছে যা সমস্ত আপডেট পেয়ে যায়।


0

আপনি যদি অ্যামাজনে চলছেন তবে আমি ডায়নামোডিবি বিবেচনা করব। এটি ফ্ল্যাশ মেমরি ভিত্তিক। এখানে এটির একটি লিঙ্ক: https://aws.amazon.com/dynamodb/

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

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

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

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