সিএসভি কি এক্সএমএল এবং জেএসওনের একটি ভাল বিকল্প? [বন্ধ]


22

কি করা CSV বিরুদ্ধে একটি ভালো বিকল্প বিবেচনা এক্সএমএল এবং তাদেরকে JSON ভাষায় প্রোগ্রামিং জন্য?

আমি সাধারণত ফ্ল্যাট ফাইল স্টোরেজ হিসাবে এক্সএমএল এবং জেএসএন (বা কখনও কখনও একটি সরল পাঠ্য ফাইল) ব্যবহার করি। তবে, সম্প্রতি আমি পিএইচপি-তে একটি সিএসভি বাস্তবায়ন পেয়েছি । আমি সাধারণত সিএসভি দেখতে পেয়েছি এক্সেল ফাইলগুলিতে ইনপুটগুলির জন্য ব্যবহৃত হয়েছে , তবে প্রোগ্রামিংয়ের সাথে আমি এটি কখনও ব্যবহার করি নি। এটি কোনও উপায়ে XML বা JSON এর চেয়ে ভাল হবে?


3
এই সারিটি অস্পষ্ট। আপনি কি জিজ্ঞাসা করছেন যে সিএসভি কোনও স্টোরেজ সিস্টেম হিসাবে আরও ভাল ফর্ম্যাট তৈরি করে, অথবা আপনি যদি জিজ্ঞাসা করছেন যে এক্সএমএল / জেএসএনের উপর সিএসভি ব্যবহারের কোনও কারণ আছে কিনা ?
গ্র্যান্ডমাস্টারবি

4
কোনও সিএসভি বার্তা কাঠামো একটি এক্সএমএল বা জেএসএন বার্তা ফর্ম্যাটে ম্যাপ করা যায়। সমস্ত এক্সএমএল / জেএসএন বার্তা ফর্ম্যাটটি সিএসভিতে ম্যাপ করা যায় না। সুতরাং, সিএসভি কেবলমাত্র একটি নির্দিষ্ট ডেটা ব্যবহারের ক্ষেত্রে, সারণী বিন্যাসকে কভার করে, যেখানে জেএসএন এবং এক্সএমএল আরও জটিল বার্তা কাঠামোকে আবরণ করতে পারে।
জন রেয়নর

@ জোনরয়নর: আমি মনে করি যে কোনও এক্সএমএল বা জেএসএন ফর্ম্যাটটি সিএসভিতে ম্যাপ করা যেতে পারে - তবে পরিষ্কারভাবে নয়। আপনাকে গাছের কাঠামোর প্রতিনিধিত্ব করার কিছু উপায় আবিষ্কার করতে হবে। ফলাফলটি কুরুচিপূর্ণ এবং কার্যকরভাবে কার্যকর করার মতো নয় worth প্রায় সমস্ত ব্যবহারিক উদ্দেশ্যে, আপনি সঠিক।
কিথ থমসন

উত্তর:


41

উত্তরটি হল, এটা নির্ভরশীল।

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

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

ওয়ানডে সম্প্রতি সিএসভি সম্পর্কে মন্তব্য করেছে, 2014 কে "সিএসভির বছর" বলে ডাকে

"যথাযথ" সিএসভি ফর্ম্যাটিংয়ের জন্য, আপনার HTTP প্রতিক্রিয়াগুলিতে CSV মাইম প্রকারটি ব্যবহার করার বিষয়টি বিবেচনা করুন


2
উত্তরাধিকার ব্যবস্থা জন্য +1; যখন লেগাসি ব্যবস্থা অভিপ্রেত পদ্ধতিতে করা CSV ব্যবহার করছেন না হতে পারে (আমি সম্প্রতি একটি CSV ছিল একটি প্রতিবেদন, না একটি টেবিল আমদানি, সত্যি বলতে, সঙ্গে চুক্তি করতে হয়েছে), আমরা কি বিশ্ব জুড়ে উত্তরাধিকার তথ্য দিয়ে মোকাবেলা করতে হবে ।
ব্রায়ান এস

1
সিএসভির স্ট্রিমিং সুবিধা রয়েছে যা একটি বড় বিষয়: জেএসএন বা এক্সএমএল পার্সারের তুলনায় সিএসভি পার্সারের অনেক কম রাজ্য রয়েছে।
ম্যাট

22

অবশ্যই না।

সিএসভি হ'ল একটি সারণী বিন্যাস যা ডেটা সেট বা অন্যান্য ট্যাবুলার ডেটাতে খুব ভাল মানচিত্র করে। তবে সব ডাটা টেবুলার হয় না! সাধারণত, আমরা অবজেক্ট গ্রাফগুলি সিরিয়াল করতে চাই । নিম্নলিখিত ক্ষেত্রে এটি কঠিন হতে পারে:

  • বিজ্ঞপ্তি রেফারেন্স
  • ভাগ করা অনুচ্ছেদ (যেমন দুটি বস্তু যা উভয় সদস্যের মতো একই বস্তু ধারণ করে)
  • বিভিন্ন ধরণের অবজেক্ট একই ডকুমেন্টে সিরিয়াল করা হবে

আমরা আরও আমাদের স্টোরেজ ফর্ম্যাট থেকে নির্ভরযোগ্যভাবে ডি-সিরিয়ালাইজ করতে সক্ষম হতে চাই।

এক্সএমএল

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

তাদেরকে JSON

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

YAML

JSON এর এক্সটেনশন হিসাবে খুব সহজেই বোঝা গেল। এলিয়াসের ধারণা রয়েছে যা স্বেচ্ছাসেবী জটিলতার অবজেক্ট গ্রাফ তৈরি করতে দেয়। ট্যাগগুলির মতো মেটাডেটার ধারণা রয়েছে যা সঠিক টাইপিংয়ের জন্য ব্যবহার করা যেতে পারে।

CSV তে

একটি টেবিল ছাড়া কিছুই নেই। আমরা যদি অবজেক্ট গ্রাফ সঞ্চয় করতে চাই তবে আমাদের মতো স্কিমা ব্যবহার করতে হবে

#ID,Type,Field1,Field2,...,FieldN

1,String,foo
2,String,bar
3,Array<String>,1,2

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

সুতরাং মূলত, সাধারণ সিরিয়ালাইজেশন ফর্ম্যাট হিসাবে সিএসভি ব্যবহার করার সময় সহজ জিনিসগুলি কঠিন বা অসম্ভব।

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


1
আমি মনে করি এটি একটি ন্যায্য যুক্তি। এগুলি আলাদা, তাই এগুলিকে বিভিন্ন জিনিসের জন্য ব্যবহার করুন, প্রতিটি যেখানে এটি সবচেয়ে ভাল তা ব্যবহার করুন।
বেন

1
প্রথম লাইনটি ছাড়া এটি একটি ভাল উত্তর হবে। সারণী সংক্রান্ত তথ্যের জন্য সিএসভি এক্সএমএলের একটি ভাল বিকল্প (একটি বিতরণযোগ্য এসকিউএলাইট ফাইল সম্ভবত উভয়ের চেয়ে ভাল)। আপনি যেমন টবুলার ডেটার জন্য ব্যাখ্যা করছেন এটি উচ্চতর ফাইল পছন্দ।

4

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

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

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

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

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


3

না।

সিএসভি আসলে কোনও একক বিন্যাস নয়। পলায়ন, বিভাজক এবং অন্যান্য ফর্ম্যাটিং ইস্যুগুলির জন্য বিভিন্ন ধরণের স্টাইল রয়েছে যা বন্যের অনেকগুলি সিএসভি ফাইল রয়েছে।

আপনি যদি এটি ফ্ল্যাট ফাইল স্টোরেজ হিসাবে ব্যবহার করতে যাচ্ছেন তবে জেএসওএন ব্যবহার করা আপনাকে আরও ভাল পরিবেশিত করবে। আপনার কাছে CSV কুলজিংয়ের তুলনায় JSON অনেক কম ঝামেলাযুক্ত বস্তুগুলিতে এবং এর থেকে মানচিত্র দেয়।


0

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

এক্সেল একটি ভাল প্রদর্শন: ইংরেজি সংস্করণে এটি "," বিভাজক হিসাবে ব্যবহার করে। জার্মানিতে এটি ";" ব্যবহার করে। সুতরাং একটি জার্মান সংস্করণ ইংরাজী সিএসভি ফাইলগুলিতে চিট করে, এবং তদ্বিপরীত ...

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


3
এটি "কমা", আরএফসি 4180 দেখুন । মাইক্রোসফ্ট জার্মানিতে কিছু ভেঙে ফেলেছে তার অর্থ এই নয় যে একটি প্রমিত বিন্যাসটি অকেজো ...
বেন

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

এই উত্তরটি সিএসভির বিরুদ্ধে গুরুত্বপূর্ণ ক্ষতিগুলি সনাক্ত করে।
gdbj

-3

জেনারেল না। কেন? জেএসএন এবং এক্সএমএল মূলত ভয়ঙ্কর সিএসভি থেকে মুক্তি পাওয়ার জন্য রয়েছে। তারা সিএসভি দিয়ে দীর্ঘদিন যাবত স্ট্রাস্ট্রাক্টড হয়েছে তার কাঠামোগত পন্থা। হ্যাঁ, এমন কিছু ব্যবহার-মামলা রয়েছে যেখানে সিএসভি এখনও পছন্দসই রয়েছে তবে সাধারণভাবে 10 টির মধ্যে 9 টি ক্ষেত্রে আপনি সিএসভি ব্যবহার না করাই ভাল।


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