ডেটা মার্ট / গুদামে সময় অঞ্চল পরিচালনা করা ling


12

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

তবে, আমি যে প্রশ্নের উত্তর দিতে বেশ কষ্ট পাচ্ছি তা হ'ল আমার গতিশীল টাইম জোনের প্রয়োজনীয়তা বিবেচনা করে তারিখ এবং সময় মাত্রা আসলে আমার পক্ষে ভাল কি করে? একটি সময় মাত্রা আরও কিছুটা বোঝায় তবে তারিখের মাত্রা নিয়ে আমার খুব কষ্ট হচ্ছে। তারিখের মাত্রার জন্য একটি সাধারণ নকশার পদ্ধতির মধ্যে সাধারণত দিনের নাম, সপ্তাহের দিন, মাসের নাম ইত্যাদি বৈশিষ্ট্য থাকে যা আমি সব কিছুর সাথেই যে সমস্যাটি করছি তা হ'ল ইউটিসি-তে মঙ্গলবার, ৩১ শে ডিসেম্বর, ২০১৩, মঙ্গলবার, ১১:০০ টা, বুধবার , 1 লা জানুয়ারী, ২০১৪ ইউটিসি + ২ এর পরে থাকা সর্বকালের জোনে।

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

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

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


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

6
আমি কোনও কারণ নিয়ে ভাবতে পারি না যে আমি সময় স্বতন্ত্রভাবে তারিখটি সঞ্চয় করতে চাই। এটিকে সবগুলি ইউটিসি তারিখের সময় হিসাবে সংরক্ষণ করুন এবং উপস্থাপনা স্তরটিকে স্থানীয়করণ সম্পর্কে চিন্তিত হতে দিন।
বিলিংক

1
আমি @ বিলিংক এর সাথে একমত আমি নিশ্চিত নই যে আপনি সময় জোন রূপান্তর করতে অবিচ্ছিন্নভাবে একসাথে রাখলে আপনি আলাদাভাবে তারিখ এবং সময় সংরক্ষণ করে কী লাভ করবেন।
mmarie

2
@ বিলিংক: "আমি কোনও কারণ বিবেচনা করতে পারি না যে আমি সময় স্বতন্ত্রভাবে তারিখ সংরক্ষণ করতে চাই।" - আমি পারি. যখনই আপনি গুদাম বন্ধ একটি ঘনক্ষেত্র তৈরি করা হয়। পৃথক তারিখ এবং সময়সীমা ডাইমেনশনগুলি রাখা সাধারণ এবং সর্বোত্তম অনুশীলন।
মিচ গম

@ মিচওয়েট আপনি কি আমাকে বুঝতে সাহায্য করতে পারেন (সম্ভবত আপনি একটি উত্তর রচনা করছেন)? আমি বিশ্বব্যাপী বিক্রয় সহ একটি প্রাপ্তবয়স্ক সংস্থা এবং ২৩০০ জিএমটি-তে আমার বিক্রিতে প্রবল উত্সাহ রয়েছে surge আমি আমার স্লিকারটি প্রতিবেদনে টেনে এনেছি এবং নিশ্চিত হয়েছি যে মার্কিন পূর্ব এবং কেন্দ্রীয় সময় অঞ্চলগুলিতে, লোকেরা বাড়ি ফেরার পথে কিছু প্যাকেজযুক্ত পানীয় গ্রহণ করায় আমার কিছু বিক্রি চলতে পারে তবে ভারতে এটি 0330, কেউই এই মুহুর্তে কিংফিশারকে তুলে নিচ্ছে না এবং পার্থের am.৩০ বেলা আপনি সমস্ত নিচে শক্তিমান তবে কে ভিবি দিয়ে দাঁত ব্রাশ করছেন? পরিবর্তে, লোকেরা কাজের পরে বোজে কিনে এত বেশি 1700 তবে আমাকে তার পরে তারিখের সীমানা সম্পর্কে চিন্তা করা দরকার
বিলিংক

উত্তর:


7

প্রথমত ...

Datime/Timeএকটি Dateমাত্রা এবং একটি Timeমাত্রায় পৃথক করা অবশ্যই যাওয়ার উপায়।

একাধিক সময় অঞ্চল পরিচালনা করার জন্য আপনি সদৃশ প্রয়োজন DateKeyএবং TimeKeyযাতে আপনি নিম্নলিখিত আছে:

  • LocalDateKey
  • LocalTimeKey
  • UtcDateKey
  • UtcTimeKey

তুমি বলো...

আমি যে সমস্ত সমস্যাটি নিয়ে যাচ্ছি তা হ'ল মঙ্গলবার, 31 ডিসেম্বর, ২০১৩ ইউটিসি-তে 11:00 অপরাহ্ন বুধবার, 1 জানুয়ারী, ২০১৪ ইউটিসি + ২ এর পরে থাকা সর্বকালের জোনগুলিতে।

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

/*
    Assumes the following:
        - [DateLongName] has the format of this example "Tuesday, December 31, 2013"
        - [TimeShortName] has the format of this example "11:00 PM"
        - Both [DateLongName] & [TimeShortName] are strings
*/
select
    -- Returns a string matching this example  "11:00 PM Tuesday, December 31, 2013"
    localTime.TimeShortName + ' ' + localDate.DateLongName
    ,utcTime.TimeShortName + ' ' + utcDate.DateLongName
    ,f.*
from
    FactTableName  AS f

    -- Local Date and Local Time joins          
    inner join dbo.Date  AS localDate
        on localDate.DateKey = f.LocalDateKey

    inner join dbo.Time  AS localTime
        on localTime.TimeKey = f.LocalTimeKey 

    -- Utc Date and Utc Time joins    
    inner join dbo.Date  AS utcDate
        on utcDate.DateKey = f.UtcDateKey

    inner join dbo.Time  AS utcTime
        on utcTime.TimeKey = f.UtcTimeKey 

বন্ধ...

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

  • গণনাটি যে কোনও প্রশ্নের মধ্যে থাকা তাদের উপর অতিরিক্ত পারফরম্যান্সের বোঝা রাখে, আপনার যে কোনও রিপোর্টের জন্য কোয়েরি ক্যোয়ারী চালানোর সংখ্যাটি বহুগুণ বেড়ে যায় (লক্ষ লক্ষ সারি পড়ার ক্ষেত্রে এই বিষয়টি)
  • গণনা নিশ্চিত করার অতিরিক্ত বোঝা প্রতিটি ক্যোয়ারিতে সঠিকভাবে বজায় রাখা হয় (বিশেষত যখন আপনি দিবালোকের সঞ্চয় সময় বিবেচনায় নেন)
  • যে কোনও সূচকের রেঞ্জ স্ক্যানিং প্রতিরোধ করুন কলামটি এর অংশ, কারণ আপনি কলামে একটি গণনা করছেন যা সিকের পরিবর্তে সূচি স্ক্যানগুলি করতে কোয়েরিকে জিজ্ঞাসাবাদ করে (যা প্রতিটি ডেটা পৃষ্ঠা পড়ার প্রয়োজন হিসাবে সাধারণত বেশি ব্যয়বহুল); এটি অ- সরলযোগ্য হিসাবে পরিচিত
    • মন্তব্যের কারণে সম্পাদনা করুন: আপনি যদি রূপান্তরটিকে প্রকৃত ক্যোয়ারিতে নামিয়ে দেন তবে এটি প্রযোজ্য ।
  • অতিরিক্ত ইউটিসির তারিখ এবং সময় উপলভ্য থাকার ধারণাটি ব্যবহার করে, আপনাকে এই ধারণাটি গ্রহণ এবং এটি কল করে বাড়াতে বাধা দেওয়ার কিছুই নেই StandardisedDateKey, বা CorporateHQDateKeyযেখানে কোনও ইউটিসি তারিখ সারণির পরিবর্তে আপনি অন্য কিছু ব্যবসায়িক সম্মতির মানের ভিত্তিতে মানিক করেছেন
  • দুটি পৃথক কলামের ধরণের (স্থানীয় এবং ইউটিসি) থাকার কারণে ভৌগলিক দূরত্বের পাশাপাশি পাশাপাশি তুলনা করা যায়। ভাবুন -> অস্ট্রেলিয়ায় কেউ স্থানীয় এবং ইউটিসি উভয়ের সাথে টাইমস্ট্যাম্পযুক্ত একটি রেকর্ড প্রবেশ করেছে, নিউইয়র্কের কেউ স্থানীয় (অস্ট্রেলিয়া) তারিখ এবং সময় এবং ইউটিসির তারিখ এবং সময়টির সাথে নিউইয়র্ক প্রতিনিধিত্ব করে প্রতিবেদনটি পড়েন , যার ফলে সে কিছু দেখে তাদের অস্ট্রেলিয়ান অংশটি দিনের মাঝামাঝি সময়ে করেছিল (অস্ট্রেলিয়ার সময়) তাদের সময় (নিউ ইয়র্ক সময়) রাতের মাঝামাঝি সময়ে ঘটেছিল। সময়ের এই তুলনা বহু-জাতীয় ব্যবসায়ের ক্ষেত্রে অপরিহার্য।

কেন একটি একক পরিবর্তে পৃথক Dateএবং Timeমাত্রা ব্যবহার DateTime? একটি ফ্যাক্ট টেবিলের বেশ কয়েকটি তারিখ থাকতে পারে এবং প্রত্যেকটির জন্য দুটি পরিবর্তে দুটি আইএনটি সংযুক্ত করা যায়।
সমস্ত ব্যবসায়ের জন

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

0

এই উত্তরটির সংকোচনের জন্য আমি সময়ের আগেই ক্ষমা চেয়ে নিচ্ছি এবং যখন আমি কর্মে নেই তখন বিশদ দেওয়ার পরিকল্পনা করছি।

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

অন্য কোনও প্রশ্ন বা মন্তব্য যদি নির্দ্বিধায় জিজ্ঞাসা করতে পারেন।


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