নোএসকিউএল: কাঠামোগত ডেটা কী?


9

আমরা বর্তমানে আমাদের এমএসকিউএল সার্ভার ভিত্তিক সমাধান সহ সংস্থানগুলির প্রান্তে চলেছি।

আমাদের বোঝা মোকাবেলায় পরবর্তী পদক্ষেপ সম্পর্কিত প্রচলিত বিকল্প রয়েছে:

  • দ্রুত সিপিইউ এবং আইও কিনুন
  • কিছু গ্রাহককে পৃথক সার্ভারে বিভক্ত করুন
  • ক্লাস্টারে ডিবি সরান

লাইসেন্সিং বা হার্ডওয়্যার বা সময়ের নিরিখে সবই ব্যয়বহুল। সুতরাং, আমি পুরো সিস্টেমটিকে একটি স্কেবল সমাধানে নসকিএল ইঞ্জিন ক্যাসান্দ্রার প্রতিশ্রুতি দিয়ে সরিয়ে অন্য বিকল্প যুক্ত করতে চাই।

তবুও, আমি নিশ্চিত নোএসকিউএল ডেটাবেসগুলির সাথে অভিজ্ঞ এবং অভিজ্ঞ নই, সুতরাং আমাকে "অপরিকল্পিত" ডেটার কাঠামো বুঝতে হবে।

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

ব্যবসায়ের ভিত্তিতে, অর্ডার এবং অর্ডারলাইনগুলি একটি ইউনিট। তবে আরডিবিএমএসের কারণে সেগুলি টেবিলগুলিতে সঞ্চিত থাকে এবং অবশ্যই সর্বদা যোগ দিতে হবে।

অপারেশন চলাকালীন, আমরা মাঝে মাঝে কেবলমাত্র শীর্ষ অংশটি লোড করতে পছন্দ করি তবে বেশিরভাগ সময় আমরা কিছু দরকারী তথ্য প্রদর্শনের জন্য মাথার সারি + কিছু কেভিপি লোড করি।

উদাহরণস্বরূপ, একটি ওভারভিউ তালিকায় আমরা প্রতিটি সারিটির কলামগুলিতে শিরোনাম শনাক্তকারী + কিছু মান দেখি।

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

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

ডেটাসেটের মতো এই জাতীয় "অভিধান" কি কোনও এনএসকিউএল ডাটাবেসে আরও ভাল সঞ্চয় করা যেতে পারে? এবং আমাদের এ থেকে কর্মক্ষমতা সুবিধা হবে? এই মাথাটি + কেভিপিগুলিকে এক ডেটাসেট হিসাবে ক্যাসান্দ্রার মডেল করবে? ক্যাসান্দ্রার ওয়েবপেজ এবং কয়েকটি টিউটোরিয়ালটি দেখে আমার ধারণা হয় যে, আমাদের আরডিবিএমএস এবং ক্যাসান্দ্রার মধ্যে ডেটা সংস্থার দিক থেকে এতটা পার্থক্য নেই - আপনি যদি 5 কেভিপি নির্বাচন করতে চান তবে একই পরিমাণে আমাদের সাথে যোগ দেয় প্রতিটি সারির জন্য একটি তালিকার জন্য।

আলোকিতকরণ স্বাগত, সমস্যাগুলি সঠিকভাবে ব্যাখ্যা করার জন্য কাগজগুলির দিকেও ইঙ্গিত করুন।

উত্তর:


3

কয়েকটি ধারণা আছে যা আলাদা করা দরকার। একটি কাঠামো সম্পর্কে এবং অন্যটি স্কিমা সম্পর্কে।

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

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

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


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

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

5

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

তবে অতিরিক্তভাবে আমি আপনার প্রশ্নে এমন কিছু পড়েছি যা আমাকে ভাবতে বাধ্য করেছে। আপনার ডাটাবেসের বর্তমান অবস্থা সম্পর্কে খুব বেশি কিছু নেই তবে আপনার বাক্য "আমরা মূলত" কী-ভ্যালু "তালিকাগুলি হিসাবে ব্যবহারকারীদের দ্বারা প্রবেশ করা ডেটা সংরক্ষণ করি তা আমাকে ভাবতে বাধ্য করে যে সমস্যাটি যদি কোনও দুর্বল ডেটা মডেল না হয় would শারীরিক সম্পদের অভাব। আমি "traditionalতিহ্যবাহী" এসকিউএল ডাটাবেসে অবিশ্বাস্য পারফরম্যান্স সহ সত্যিই বড় টেবিলগুলি (+10 বিলিয়ন সারি) পরিচালনা করেছি।

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

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

CREATE TABLE benchmarkTable (
  element INTEGER,
  key1 VARCHAR(xx),
  key2 INTEGER,
  key3 DECIMAL(5,2),
...
);

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

আশা করি এটি সহায়তা করে, বা কমপক্ষে সম্ভাবনাগুলি প্রশস্ত করে এবং তদন্তের জন্য একটি নতুন লাইন উন্মুক্ত করে।


আমি আপনার উত্তরটির প্রশংসা করি, তবে বাস্তবে পরিস্থিতিটি এতটাই, যে আমরা সত্যই তথ্যের কাঠামোটি জানি না। আমরা ফর্মগুলির ডেটা সঞ্চয় করি এবং আমরা ফর্মের মডেলটির কাঠামো জানি না। আমরা অবশ্যই অ্যাপ্লিকেশনটিতে জানি, তবে এটি গতিশীল এবং যে কোনও সময় পরিবর্তন করা যেতে পারে।
thst

বুঝতে পারছিল না। আমি জানি না এটি কতটা চ্যালেঞ্জিং তবে চেষ্টা করার মত ধারণা হিসাবে, এটি কোনও পারফরম্যান্স এফকে, সম্ভবত কোনও ইনটিজার দ্বারা ব্যবহারকারী ভরাট টেবিলে রেফারেন্সযুক্ত সাধারণ কীগুলির পুল সম্বলিত একটি টেবিল তৈরি করার কাজ করবে? কোনও ভার্চার কলামকে সূচিকৃত করার চেয়ে কিছুটা ভালো পারফর্ম করা যা, যদি এটি খুব গতিশীল পরিবর্তন হয় তবে আমার ধারণা এটি সংক্ষিপ্ত হবে না। এবং এটি সূচকের আকারও হ্রাস করবে।
লিরনকেরেটো

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

1
এটা ঠিক আছে, চিন্তা করবেন না। আমি মনে করি যে আমি আপনার পয়েন্টটি দেখছি এবং আপনার পদ্ধতির জন্য পারফরম্যান্স উন্নতি এবং সম্ভাব্যতার মধ্যে একটি ভাল বাণিজ্য হিসাবে আমার সন্ধান। স্পষ্টতই, এই ক্ষেত্রগুলি নির্ধারণের জন্য ব্যবহারের পরিসংখ্যান থাকা জরুরী। আপনি কি বেঞ্চমার্ক করেছেন? কমপক্ষে এটি আপনাকে আরও কিছু সময় কিনতে পারে যতক্ষণ না আপনি কোনও (আরও ভাল? সংজ্ঞাযুক্ত) সমাধান খুঁজে পান বা আবিষ্কার করতে পারেন যে আপনি এটির সাথে দীর্ঘ সময় চালাতে পারেন।
লিরনকেরেটো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.