কোনও নেটওয়ার্কের তুলনায় দক্ষ ডিএজি তুলনা


11

ইন বিতরণ সংস্করণ নিয়ন্ত্রণ ব্যবস্থা (যেমন একটি Mercurial এবং গীত ) দক্ষতার নির্দেশ তুলনা acyclic গ্রাফ (DAGs) একটি প্রয়োজন নেই। আমি একজন মার্চুরিয়াল বিকাশকারী এবং আমরা দুটি তদন্তের সময় এবং নেটওয়ার্ক-জটিলতার বিষয়ে আলোচনা করার মত তাত্ত্বিক কাজের বিষয়ে শুনে আগ্রহী।

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

a --- b --- c --- d --- e

গ্রাফের তুলনা ছবিতে আসে যখন কারও কাছে কেবল ইতিহাসের অংশ থাকে এবং অনুপস্থিত অংশটি পুনরুদ্ধার করতে চায়। কল্পনা করুন আমার কাছে তা থাকত aকরতে cএবং তৈরি xএবং yএর উপর ভিত্তি করে c:

a --- b --- c --- x --- y

মার্চুরিয়ালে, আমি করব hg pullএবং ডাউনলোড করব dএবং e:

a --- b --- c --- x --- y
              \
                d --- e

লক্ষ্যটি হ'ল যখন গ্রাফের অনেকগুলি (বলুন, 100,000 এরও বেশি) নোড থাকে তখন কার্যকরভাবে dএবং eকার্যকরভাবে হয়। দক্ষতা উভয়ই উদ্বেগ

  • নেটওয়ার্ক জটিলতা: স্থানান্তরিত বাইট সংখ্যা এবং নেটওয়ার্ক রাউন্ড-ট্রিপগুলির সংখ্যা
  • সময়ের জটিলতা: দুটি সার্ভারের দ্বারা পরিসংখ্যানের পরিমাণ যা বিনিময় বিনিময় করে

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


গুগল প্লাসে আলোচনা কিছুটা অব্যাহত রয়েছে ।
মার্টিন গিজার

উত্তর:


13

এই প্রসঙ্গে, গ্রাফ নোডগুলির কিছু ধরণের স্বতন্ত্র সনাক্তকারী (একটি হ্যাশ বা চেকসাম) আছে, তাই না? সুতরাং আপনার কোনও ধরণের সাবগ্রাফার আইসোমরফিজম টেস্টিং করার দরকার নেই, আপনার কেবল দুটি নোডের একটি তালিকা দরকার যা আপনার দুটি সংস্করণের মধ্যে পৃথক এবং প্রান্তগুলি এই পদক্ষেপের জন্য মোটেই কার্যকর নয়। আমার সিগকম ২০১১-এর পেপার " পার্থক্য কী? পূর্ববর্তী প্রসঙ্গ ছাড়াই দক্ষ সেট পুনর্মিলন"(গুডরিচ, উয়েদা এবং ভার্গিজের সাথে) ঠিক এই সমস্যাটিকে বিবেচনা করে: এটি প্রমাণিত হয়েছে যে আপনি কেবলমাত্র আনুপাতিক যোগাযোগের পরিমাণ ব্যবহার করে যে দুটি নোড যোগাযোগের ব্যবস্থা করে তবে দুটি যোগাযোগকারী সার্ভারের দ্বারা নয় এমন একটি নোডের পরিচয় নির্ধারণ করতে পারবেন turns পরিবর্তিত নোডের সংখ্যা এবং কেবলমাত্র একটি একক রাউন্ড ট্রিপ ব্যবহার করে। একবার আপনার কাছে এই তথ্যটি হয়ে গেলে, পরিবর্তনগুলি নিজেরাই দ্বিতীয় রাউন্ড-ট্রিপে টানতে সহজ, আবার অনুকূল যোগাযোগের মাধ্যমে।


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

@ ডেভিড: একটি নির্ভুলতা (বর্তমানে আমি মুরচুরিয়াল দ্বারা ব্যবহৃত অ্যালগরিদমের একজন লেখক)। আমরা আসলে "সাধারণ" নোডগুলির সেট সম্পর্কে যত্নশীল, অনুপস্থিত নোডের মূল্য জানার দরকার নেই।
টনফা

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

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

রাউন্ড ভ্রমণের সংখ্যাও (যা খুব অল্প পরিমাণে পরিণত হয়) অন্তর্ভুক্ত করার জন্য আমি আমার উত্তর আপডেট করেছি।
ডেভিড এপস্টিন

3

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


1
ধন্যবাদ, আমি এটি নোট করতে প্রশ্নটি কিছুটা আপডেট করেছি।
মার্টিন গিজার

0

আমার কাছে দুই ধাপের প্রক্রিয়ার মতো শোনাচ্ছে।

  1. সমস্ত ক্লায়েন্টকে জিজ্ঞাসা করুন যদি তাদের পিতামাতা সি যেখানে থাকে তবে তাদের যদি কমিট থাকে
  2. যদি তা হয় তবে গ এর সমস্ত বাচ্চাদের সন্ধান করুন

১ এর কাজটি আমি মনে করি মূলত ক্লায়েন্টের পক্ষ থেকে প্রক্রিয়াজাত করা হয় এবং সমস্ত ক্লায়েন্টের নেট থেকে কমিটের হ্যাশ দরকার।


আপনি কোন পরিস্থিতিতে বর্ণনা দিচ্ছেন? কেস আমি কোথায় তৈরি xএবং yএবং টান প্রয়োজন eএবং dসার্ভার থেকে? মূল সমস্যাটি হ'ল আমি (ক্লায়েন্ট হিসাবে) "শাখা পয়েন্ট" জানি না c
মার্টিন গিজার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.