আমি কীভাবে একটি স্ট্যাক হিসাবে একটি ডাটাবেস / টেবিল বাস্তবায়ন করব


11

আমার একটি স্টেট-মেশিন রয়েছে যা বিভিন্ন ব্যবহারকারীর জন্য কিছু ফাইল-নাম ধাক্কা / পপ করতে হবে। আমি traditionতিহ্যগতভাবে ডেটা স্ট্রাকচারের পছন্দ হিসাবে স্ট্যাকগুলি ব্যবহার করব তবে আগত ওয়েব-অনুরোধগুলির মধ্যে ডেটা কাঠামো ধরে রাখার কোনও উপায় না হওয়ায় এটি একটি ডাটাবেস ব্যবহার করে করা দরকার way

আমি ভাবছিলাম ডাটাবেস ব্যবহার করে স্ট্যাক কার্যকারিতা বাস্তবায়নের একটি ভাল উপায় কী হবে?

আমার সমর্থন করা দরকার:

  • পুশ (ফাইলের নাম, ব্যবহারকারী): ব্যবহারকারীর জন্য একটি ফাইলনাম চাপুন
  • পপ (ব্যবহারকারী): ব্যবহারকারীর জন্য সর্বাধিক সর্বাধিক ফাইলনামটি পপ করুন

সম্পাদনা :

আমি একটি ধারণা প্রোটোটাইপ করছি এবং তাই আমি পাইথন সহ স্ক্লাইট 3 ব্যবহার করছি।

ধন্যবাদ!


আপনি কি একই ব্যবহারকারীর একাধিক সমবর্তী সংযোগের আশা করছেন? কি ভলিউম? কি ডিবি ইঞ্জিন খুব দয়া করে?
gbn

@gbn অবশেষে একই ব্যবহারকারীর একযোগে সংযোগ থাকতে পারে। তবে আপাতত, আমি একটি ধারণা প্রোটোটাইপ করছি এবং আমি ব্যবহারকারী হিসাবে একক সংযোগ গ্রহণ করি
brainydexter

@ ব্রিনিইডেক্সটার আমি আপনি খুব কি করতে চাইছেন তা জানতে খুব আগ্রহী। আমি অনুভূতি পেয়েছি যে আপনি আপনার সমস্যার ভুল সমাধান তৈরি করতে পারেন। আপনি আমাদের নিজের সমস্যাটি বলতে এবং এটি সমাধান করার জন্য সেরা উপায়ে জিজ্ঞাসা করতে চাইতে পারেন। একটি স্ট্যাকটিকে ডাটাবেস টেবিল হিসাবে প্রয়োগ করা খারাপ ধারণা বলে মনে হচ্ছে।
xenoterracide

@xenoterracide: আমি কি তাই কাজ করার চেষ্টা করছি সামগ্রিক অভিপ্রায়: stackoverflow.com/questions/5145051/... স্ট্যাক সম্পূর্ণরূপে, তাই এখনও এই একটি সমাধান খোঁজ করছি কাজ করে নি।
brainydexter

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

উত্তর:


6

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

আপনি ব্যবহার করতে চাইবেন INNODBকারণ আপনার টেবিলটি রচনা-নিবিড় হতে চলেছে এবং বড় টেবিলের জন্য, INNODB-এর সারি-লকিং একটি জীবন রক্ষাকারী হবে MyISAM

টেবিল ডিজাইন হিসাবে মনে হচ্ছে আপনার কেবলমাত্র একটি টেবিলের প্রয়োজন:

CREATE TABLE `wordpress`.`<table_name>` (
`id` smallint(4) NOT NULL AUTO_INCREMENT UNSIGNED,
`user` varchar(30) NOT NULL,
`filename` varchar(255) NOT NULL,
`date_insert` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE `userFile`(user, filename)
) ENGINE=`InnoDB`;

আমি একটি স্বেচ্ছাসেবী 'আইডি' কলাম সেট করেছিলাম AUTO_INCREMENTকারণ প্রাথমিক কীটি প্রতিটি সূচকের প্রতিটি প্রবেশে প্রতিলিপি করা হয়। সুতরাং, আপনার ফাইলের নামগুলি দীর্ঘকালীন হলে (ব্যবহারকারী, ফাইলের নাম) এর একটি প্রাথমিক কী করা পারফরম্যান্স সমস্যার কারণ হতে পারে।

আপনার 'আইডি' কলামটির আকার আপনার টেবিলটি কত বড় হতে চলেছে তার উপর নির্ভর করে। স্বাক্ষরবিহীন স্মার্টিন্ট আপনাকে 65k সারি দেবে।

ব্যবহারকারী এবং ফাইলের নামগুলি ভার্চর, কারণ এগুলি দৈর্ঘ্যে তাত্পর্যপূর্ণভাবে অনুমান করি।

date_insertশুধু একটি যখন এটি সন্নিবেশিত হয়েছিল (আপনার POP জন্য সহায়ক) উপর ভিত্তি করে আপনার ফলাফল অর্ডার উপায়


আমি প্রাথমিক কী হিসাবে (আইডি, ব্যবহারকারী) সংমিশ্রণটি তৈরি করার কথা ভাবছিলাম, যেহেতু আমি ব্যবহারকারীর উপর ভিত্তি করে চাপ বা পপ করতে চাই। আপনি কি মনে করেন ? এছাড়াও, পিওপি অপারেশনের জন্য, সর্বোচ্চ আইডি ব্যবহারকারীর জন্য রেকর্ডটি খুঁজে পাওয়া ভাল না?
brainydexter

@ ব্রিনিডিডেক্সটার ডেভ.মাইসকিএল.ডোক / রেফম্যান / ৫.০/ en / innodb- restrictions.html এর অটোয়েনক্রিমেন্টে কিছু বিধিনিষেধ রয়েছে (এটি কিছু 'বিরল ক্ষেত্রে' নিম্ন 'স্বতঃআগ্রহ মানগুলিকে পুনরায় ব্যবহার করবে)। কারণ এটি একটি সম্ভাবনা আমি একটি ডেট_ইনটার্ট ফিল্ডের সাথে গিয়েছিলাম। (আইডি, ব্যবহারকারী) প্রাইমারি কী হিসাবে ব্যবহার করার জন্য, আরও সঞ্চয়স্থান গ্রহণ করা ছাড়া আর কোনও লাভ নেই। আইডি স্বতন্ত্রভাবে সারিটি সনাক্ত করে। কেবলমাত্র 'ব্যবহারকারী' নিজেই সারিটি সনাক্ত করতে পারে না, তাই আপনি চাইলে অনন্য (ইউজারআইডি) এর পরিবর্তে 'ইউজারআইডি'-তে একটি অনন্য-অনন্য সূচক থাকতে পারে।
ডেরেক ডোনয়

6

যদি আপনি একটি ওরাকল ডাটাবেস বিবেচনা করে থাকেন তবে আপনাকে একটি লাইফোর সাথে অ্যাডভান্সড কুইউং ব্যবহার করা উচিত (প্রথমে শেষের) ডিক্যু প্যাটার্ন দিয়ে

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


ক্লাসিক প্রযোজক / গ্রাহক সেটআপ। তথ্যের জন্য ধন্যবাদ, আমি এটি মাথায় রাখব।
brainydexter

আশা করি মাইএসকিউএল এখন কিছু অ্যাডসেন্স কুইয়ের কার্যকারিতা পেয়ে যাবে যে ওরাকল "মাইএসকিএল" র মালিকানাধীন ...
ডেরেক

1
@ ডিস্টেস্ট: অবশ্যই মাইএসকিউএল-র উন্নত বৈশিষ্ট্য পাওয়ার সম্ভাবনা এখন কম, এরপরেও ওরাকল ফ্রি সফটওয়্যার এবং আপনাকে যে মূল্য দিতে হবে তার মধ্যে পার্থক্য করতে পারে।
জো

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