কোনও পিজিআর_ * রাউটিং ফাংশন কেন পিগ্রাউটিং সক্ষম ডিবিতে ওএসএম ডেটার ভিত্তিতে চিরতরে নিচ্ছে


9

আমি ওএসএমপিও ৪.7..7 ব্যবহার করে জার্মান ওএসএম ডেটাসেটকে পিগ্রাউটিং ডিবিতে লোড করেছি। সবকিছু ঠিকঠাকভাবে কাজ করে এটির কনফিগারেশনের মাধ্যমে আমার osm2po সেট আপ হয়েছে এবং এটি জাভা অংশের মাধ্যমে এটি একটি কবজির মতো কাজ করছে।

আমার * _2po_4pgr টেবিলটি কোনও সমস্যা ছাড়াই আমদানি করা হয়েছিল। এমনকি * 2po_v টেবিলটি আমদানি হয়ে যায়, যদিও আমি এই টেবিলের সম্পর্কটি পুরোপুরি বুঝতে পারি না।

আমি pgr_createTopology ফাংশনটি কার্যকর করেছিলাম যা সমস্ত m মিটার প্রান্ত গণনা করার সময় বেশ কিছুক্ষণ (12000 সেকেন্ড) চলছিল। আমি ভেবেছিলাম এটি চুক্তিটি করবে তবে তবু এটি অসহনীয়ভাবে ধীর হয়।

আমি কিছু ভুলে গেছি কিনা তা জানতে চাই। আমি জাভা লাইব্রেরির পরিবর্তে পিজারাউটিং ব্যবহার করার কথা ভাবছিলাম তবে এই মুহুর্তে এর পারফরম্যান্স অনুযায়ী তুলনার বাইরে।


1
আপনি কি সূচি তৈরি করেছেন, আপনি কি পোস্টগ্রিসের মেমরি ভেরিয়েবলগুলি সুর করেছেন? ক্রিয়েটপোলজি কেবলমাত্র পুরো ডেটাসেটের জন্য একবার চালানো হয় যাতে এর পারফরম্যান্সটি তেমন গুরুত্ব দেয় না। সাইড নোট. আমার কাছে ডিগিরোড ডেটাসেট (পুরো রাস্তা নেটওয়ার্কের 2 জি) এর মতো পুরো ফিনল্যান্ড রয়েছে এবং সর্বোচ্চ 250 এমএসে ফলাফল পাওয়া গেছে, সাধারণত কোনও অপ্টিমাইজেশন ছাড়াই 125 মিটার ms তাই এখনকার দিনগুলি আরও ভাল হওয়া উচিত

Osm2po স্ক্রিপ্ট জেনারেটর দ্বারা স্বয়ংক্রিয়ভাবে উত্স এবং লক্ষ্য কলামে সূচি রয়েছে। আরও দরকার? আমি ওয়ার্ক_মেম / রক্ষণাবেক্ষণ_কর্ম_মেম ভেরিয়েবলগুলিকে একটি গিগা বাইট মানতে পরিবর্তন করেছি, পুনরায় চালু করেছি, এখনও কোনও পরিবর্তন নেই। আমার যে কোনও স্টার্ট আপ স্ক্রিপ্ট টেম্পলেট দরকার হতে পারে?
জনি কুস্যাক

1
হুম ... ক্রিয়েটপোলজি () কী করে? আমি বলতে চাইছি, ওএসএম-নোড-আইডির উপর ভিত্তি করে osm2po ইতিমধ্যে টপোলজি তৈরি করে। সুতরাং sth চালানোর দরকার নেই। আবার একই। পিজিআরটিংয়ের জন্য (সংক্ষিপ্ত_পথ এবং সংক্ষিপ্ত_পথ_আস্টার) আপনার কেবলমাত্র তৈরি 4pgr- টেবিলের প্রয়োজন। এখানেই শেষ.
কার্স্টেন

আমার কাছে এখন ফিনল্যান্ডের ডেটাসেট, পোস্টগিস ২.০.৩, পিগ্রআউটিং ২.০.০-দেব। এবং আমি বলতে হবে এটি ধীর। pgr_astar () ব্যবহার করার জন্য ফলাফলের জন্য 1 সেকেন্ডের বেশি অলওয়েজ। আমি এই সামান্য কিছুটা দ্রুত পেয়েছি কিনা তা আমি
খতিয়ে দেখি

উত্তর:


5

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

 (SELECT ST_Expand(ST_Extent(geom_way),0.1) as box  FROM hh_2po_4pgr as l1 WHERE l1.source =7 OR l1.target = 12) 

উত্স এবং লক্ষ্য সংগ্রহের উপরে বিবিওএক্স তৈরি করে এবং এটি 0.1 ডিগ্রি প্রসারিত করে, তারপরে একই ক্যোয়ারীটি পিজিআর_ ক্যোয়ারিতে গ্রাফের আকার সীমাবদ্ধ করতে ব্যবহৃত হয়

ডিজকস্ট্রা 1.2s থেকে 65ms ডলার

SELECT  seq, id1 AS node, id2 AS edge, g.geom_way as the_geom
    FROM pgr_dijkstra(
            'SELECT id, source, target, cost FROM hh_2po_4pgr as r, 
            (SELECT ST_Expand(ST_Extent(geom_way),0.1) as box  FROM hh_2po_4pgr as l1    WHERE l1.source =7 OR l1.target = 12) as box
            WHERE r.geom_way && box.box',
            7, 12, false, false
    ) as r INNER JOIN hh_2po_4pgr as g ON r.id2 = g.id ;

এ * 2 এস থেকে শুরু করে 50 ডলার

SELECT seq, id1 AS node, id2 AS edge, cost
    FROM pgr_astar(
           'SELECT id, source, target, cost, x1,y1,x2,y2 FROM hh_2po_4pgr as r, 
             (SELECT ST_Expand(ST_Extent(geom_way),0.1) as box  FROM hh_2po_4pgr as l1    WHERE l1.source =7 OR l1.target = 12) as box
            WHERE r.geom_way && box.box',
            7, 12, false, false
    );

osm2po পোস্টগিস টেবিলের মধ্যে ডেটা (ফিনল্যান্ড-সর্বশেষ) আমদানি করতে ব্যবহৃত হয়েছিল। জিস্ট_ওয়ে কলামে সংক্ষিপ্ত সূচক যুক্ত হয়েছে এবং ডাটাবেসের জন্য পুরো ভ্যাকুয়াম বিশ্লেষণ চালায়। শেয়ার করা মেমরি 1 জি। workmem 512M


বাউন্ডিং বক্সের সাথে আমার একই ধারণা ছিল, এখনও 90 সেকেন্ডেরও বেশি এমনকি মেমরি ওয়ার্স সেট ইত্যাদির সাথেও
জনি ক্যাস্যাক

আমার 380k লাইন আছে? রাউটিং টেবিলটিতে আপনার সম্ভবত 3 এম + লাইনের মতো কিছু আছে?
সিমপ্লেসিও

1
পুরো গ্রাফটি ক্যাশে না করা পোস্টগ্রিসের এটি অন্যতম প্রধান সমস্যা। এটি মোটামুটি দ্রুত কাজ করে। তবে আমাকে এটি অন্যান্য ডাটাবেস-সারণীর সাথে সংযুক্ত করতে হবে যা বর্তমান (পরীক্ষার) পরিস্থিতিতে মাত্র 5 কপিপিএস (প্রতি সেকেন্ডের অনুসন্ধান) দিয়ে একটি বিশাল বাধা তৈরি করে
জনি কুস্যাক

1
আমি তুলনা করার জন্য একটি র‌্যামডিস্কে মাত্র 1 এম সারির একটি উপসেট লোড করেছি। pgr_dijkstra একটি ঠান্ডা দৌড়ে 3 সেকেন্ড সময় নেয়। @ সিম্প্লেক্সিয়ো সরবরাহ করেছেন এমন ববক্সের উদাহরণ সহ পিজিআর_াস্ত্রাকে ঠান্ডা দৌড়ের জন্য প্রায় 900 মিমি লাগে। সুতরাং মনে হচ্ছে সঠিক পারফরম্যান্সের জন্য আমাকে সবকিছুকে র্যামডিস্কে রাখতে হবে।
জনি কুস্যাক

1
গ্রেট! @ কেটিআইয়ের সূচীগুলির সাথে আমি এখন দ্রুত চলছি!
ম্যাগনো সি

5

অবশেষে আমি এই সিদ্ধান্তে পৌঁছেছি যে পুরো গ্রাফটি (সূচকগুলি সহ) পৃথক টেবিল স্পেসে রাখা ভাল যা একটি র‌্যামডিস্ক ব্যবহার করে স্মৃতিতে স্থায়ীভাবে স্থায়ী হয়।

উবুন্টু ১৩.০৪-তে র‌্যামডিস্ক স্থাপনের জন্য আমি নিম্নলিখিত নির্দেশাবলী ব্যবহার করেছি এবং অবশ্যই বলতে হবে এটি বেশ ভাল কাজ করছে (এটি পুনরায় চালু / পুনরায় বুট করার পরে মেমরিতে ডেটা পুনরায় লোড করার জন্য নির্দেশাবলী অন্তর্ভুক্ত)।

পরের সপ্তাহে আমি নতুন এসএসডি'র (1 জিবি / গুলি পড়ার) জন্য একটি হাত পাবো এবং পারফরম্যান্সটি তুলনা করার চেষ্টা করব।

আমি যতদূর দেখতে পাচ্ছি এটি 1M + সারি গ্রাফ স্থায়ীভাবে অ্যাক্সেসযোগ্য রাখার একমাত্র সমাধান, যেহেতু সেখানে অবিচ্ছিন্নভাবে এলোমেলো ঘটনা ঘটে।


আপনি কীভাবে পুরো গ্রাফটি তৈরি করেছেন (সূচকগুলি সহ)? আমি পিগ্রাউটিং ডকুমেন্টেশনে কিছু দেখতে পাইনি।
ডেনিস বাউসাস

আমি osm2po ব্যবহার করেছি, জাভা কোডের একটি আশ্চর্যজনক টুকরা! osm2po.de
জনি কুস্যাক

5

একটি স্থানিক ডাটাবেসের জন্য সূচকগুলি সেট আপ করতে এই গাইডটি ব্যবহার করুন । এখানে এর সংক্ষিপ্তসার:

 1. create indexes on ID, source and target columns.
 2. create index using GIST on geom column.
 3. vacuum
 4. cluster on geom column
 5. analyze

আমার _4pgr এবং _vertex টেবিলগুলির জন্য, কেবল উত্স এবং টার্গেট কলামগুলিতে আমদানির পরে সূচি ছিল (osm2po-core-5.1.0)।


ফ্যান্টাস্টিক! স্ব-যোগদানের সাথে পুরো ওএসএম দক্ষিণ আমেরিকা ব্যবহার করে ~ 45 সেকেন্ড থেকে 15 সেকেন্ড।
ম্যাগনো সি

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