ডায়নামোডিবিতে টাইমস্ট্যাম্পের জন্য কোন ডেটা টাইপ ব্যবহার করা উচিত?


98

আমি ডায়নামোডিবি-তে নতুন। আমি একটি টেবিল তৈরি করতে চাই যা ডিভাইসআইডি হ্যাশ কী হিসাবে, টাইমস্ট্যাম্পটিকে আমার রেঞ্জ কী এবং কিছু ডেটা হিসাবে ব্যবহার করবে।

{ DeviceID: 123, Timestamp: "2016-11-11T17:21:07.5272333Z", X: 12, Y: 35 }

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

  1. আমার কোন ডেটা টাইপ ব্যবহার করা উচিত? স্ট্রিং? সংখ্যা?
    এখানে চিত্র বর্ণনা লিখুন

  2. নির্বাচিত ডেটা প্রকারের জন্য, আমার কী ধরণের টাইমস্ট্যাম্প ফর্ম্যাটটি লিখতে হবে? আইএসও ফর্ম্যাট (উদা: 2016-11-11T17: 21: 07.5272333Z) বা যুগের সময় (যেমন: 1478943038816)?

  3. আমার বেশিরভাগ সময় সারণির মাধ্যমে সন্ধান করতে হবে, উদাহরণস্বরূপ: 1/1/2015 10:00:00 সকাল 31/12/2016 11:00:00 অপরাহ্ন



4
আমরা যুগের সময় / বিন্যাসে একটি সংখ্যা ব্যবহার করি। আমরা এটি মূলত
জর্জ এম হুইটেকার

স্ট্রিং এবং নম্বর ডেটা ধরণের ব্যবহার করা যেতে পারে। ISO8601 ফর্ম্যাটটি স্টোর করার সময় স্ট্রিং এবং ইপচের সময় সংরক্ষণ করার সময় নম্বর। এখানে আরও তথ্য: abhayachauhan.com/2017/12/…
অভয়া চৌহান

সরকারী ডক বলছেন, "আপনি একটি তারিখ বা একটি টাইমস্ট্যাম্প। এক আইএসও 8601 স্ট্রিং ব্যবহার করে ভাবে এই কাজ করতে হয় প্রতিনিধিত্ব করতে স্ট্রিং ডাটা টাইপ ব্যবহার করতে পারেন"।
হং

উত্তর যা আপনি (থেকে আপনার স্ক্রিনশট কপি stackoverflow.com/a/27894543/1357094 ) এই প্রশ্নের উত্তর - এবং এই প্রশ্নটি আসলে সদৃশ যে প্রথম স্থানে উত্তর প্রশ্ন বললঃ stackoverflow.com/questions/27894393/...
cellepo

উত্তর:


83

স্ট্রিং ডাটা টাইপ তারিখ বা টাইমস্ট্যাম্পের জন্য ব্যবহার করা উচিত।

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

2016-02-15

2015-12-21T17: 42: 34Z

20150311T122706Z

তারিখ বা টাইমস্ট্যাম্পের জন্য ডায়নামোডিবি ডেটা টাইপ

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

সময় ছাড়াই ফিল্টারপ্রকাশ: -

FilterExpression : 'createdate between :val1 and :val2',
ExpressionAttributeValues : {
        ':hkey' : year_val,
        ':rkey' : title,
        ":val1" : "2010-01-01",
        ":val2" : "2010-12-31"
    }

সময়ের সাথে ফিল্টারপ্রকাশ: -

FilterExpression : 'createdate between :val1 and :val2',
    ExpressionAttributeValues : {
        ':hkey' : year_val,
        ':rkey' : title,
        ":val1" : "2010-01-01T00:00:00",
        ":val2" : "2010-12-31T00:00:00"
    }

ডাটাবেস মান: -

ফর্ম্যাট 1 - টাইমজোন সহ:

{"Item":{"createdate":{"S":"2010-12-21T17:42:34+00:00"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

ফর্ম্যাট 2 - সময় অঞ্চল ছাড়াই: -

{"Item":{"createdate":{"S":"2010-12-21T17:42:34Z"},"title":{"S":"The Big New Movie 2010"},"yearkey":{"N":"2010"},"info":{"M":{"rating":{"N":"0"},"plot":{"S":"Nothing happens at all."}}}}}

স্ট্রিং মান হিসাবে সংরক্ষণ করা হয় তবে আপনি কি তারিখের সীমা অনুসন্ধান করতে পারবেন?
মার্ক বি

@ নটিওনয়েস্ট হ্যাঁ, আপনি কি স্ট্রিংয়ের সাথে একটি তারিখ ও সময়সীমা অনুসন্ধান করতে পারবেন?
ডেনিস

54
আপনি দেখতে পাচ্ছেন না যে আপনি কীভাবে "স্ট্রিং ডেটা টাইপ তারিখ বা টাইমস্ট্যাম্পের জন্য ব্যবহার করা উচিত " এ এসেছেন । দস্তাবেজগুলি আরও বলেছে যে আপনি যুগের সময়কালের জন্য তারিখগুলির জন্য সংখ্যা ডেটা টাইপও ব্যবহার করতে পারেন। আপনি কেন মনে করেন যে স্ট্রিংটি সংখ্যার উপরে ব্যবহার করা উচিত ?
রোলি

4
স্ট্রিং এবং নম্বর ডেটা ধরণের ব্যবহার করা যেতে পারে। ISO8601 ফর্ম্যাটটি স্টোর করার সময় স্ট্রিং এবং ইপচের সময় সংরক্ষণ করার সময় নম্বর। এখানে আরও তথ্য: abhayachauhan.com/2017/12/…
অভয়া চৌহান

4
@ রোলি নম্বরগুলিও ঠিকঠাক কাজ করা উচিত তবে সেগুলি কম পঠনযোগ্য।
ম্যাথু বনিগ

22

ডেটা টাইপ আপনার প্রয়োজনীয়তার উপর নির্ভর করে।

আপনি ইপিও ফর্ম্যাট ব্যবহার করে স্ট্রিং আইএসও ফর্ম্যাট বা নম্বর ব্যবহার করতে পারেন।

আইএসও ফর্ম্যাট (স্ট্রিং) এর সুবিধা হ'ল মানব পাঠযোগ্যতা তবে ডায়নামোডিবি এই ফর্ম্যাটটির জন্য টাইম টু লাইভ (টিটিএল) সমর্থন করে না। সমস্ত ফিল্টার notionquest দ্বারা ব্যাখ্যা হিসাবে 'মধ্যবর্তী' এবং 'রেঞ্জ' এর মতো কাজ করে।

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

Epoch বিন্যাস (সংখ্যা) ব্যবহার করার সুবিধাটি হ'ল আপনি টিটিএল বৈশিষ্ট্য এবং সমস্ত ফিল্টার ব্যবহার করতে পারেন।

টিএলডিআর;

যুগের ফর্ম্যাট (সংখ্যার ধরণ) - টাইম টু লাইভ
আইএসও ফর্ম্যাট ব্যবহার করতে পারে (স্ট্রিং টাইপ) - লাইভ টাইম ব্যবহার করতে পারে না তবে বেশি মানব পাঠযোগ্য


ফিল্টার এক্সপ্রেশন সংখ্যা দ্বারা সমর্থিত হতে পারে, তবে পরিসীমা ভিত্তিক মূল শর্তগুলি কেবল আইএসও ফর্ম্যাটে স্ট্রিং সহ সমর্থিত হবে
রাফায়েল আলমেডা

@ রাফায়েলআলমিদা, আপনার অর্থ কী? এবং আপনার উত্স কি?
জাচারি রায়ান স্মিথ

4
@ জাচার্যরিয়ানস্মিথ আমি ভুল ছিলাম - প্রকৃতপক্ষে সংখ্যা বৈশিষ্ট্যগুলি ফিল্টারগুলিতে বাছাই কী হিসাবে এবং কী শর্তে কাজ করে।
রাফায়েল আলমেডা

2

নম্বর ডাটা টাইপ বা স্ট্রিং ডেটা প্রকার

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

আপনি একটি তারিখ বা একটি টাইমস্ট্যাম্প উপস্থাপন করতে নম্বর টাইপ টাইপ ব্যবহার করতে পারেন। এটি করার একটি উপায় হ'ল যুগের সময় ব্যবহার — 1 জানুয়ারী 1970 কে ইউটিসি থেকে 00:00:00 সেকেন্ডের সংখ্যা example উদাহরণস্বরূপ, যুগের সময় 1437136300 17 জুলাই 2015 এ 12:31:40 pm ইউটিসি উপস্থাপন করে।

আরও তথ্যের জন্য দেখুন http://en.wikedia.org/wiki/Unix_time

...

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

2016-02-15

2015-12-21T17: 42: 34Z

20150311T122706Z

আরও তথ্যের জন্য, http://en.wikedia.org/wiki/ISO_8601 দেখুন

তারিখ বা টাইমস্ট্যাম্পের জন্য ডায়নামোডিবি ডেটা টাইপ


1

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

এই পরিস্থিতিগুলি কল্পনা করুন: গত ৩১ দিন, শেষ 24 ঘন্টা, ... আবার স্ট্রিং ফর্ম্যাটটি ব্যবহার করা সম্ভব কারণ এটিরও শুরু_আপনার রয়েছে ( দয়া করে এডাব্লুএস ডকের নীচের লিঙ্কে 3 য় উদাহরণ পরীক্ষা করুন ) তবে সংখ্যাসূচক মানগুলি আরও কার্যকর বাছাই করার সময় (তুলনা করা) ও গণনার পারফরম্যান্স।

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.KeyConditionE Expressions

তারিখ-সময়কে যুগের বিন্যাসে রূপান্তর করা সহজ

জাভাস্ক্রিপ্ট:

var date = new Date();
var epoch = date.getTime();

// converting back to date-time
var initial_date = new Date(epoch);

সি #

var date = DateTime.UtcNow;
var epoch = new DateTimeOffset(date).ToUnixTimeSeconds();

// converting back to date-time
var initial_date = DateTimeOffset.FromUnixTimeSeconds(epoch);

পাইথন

import time
epoch = time.time()
 
# converting back to date-time
initial_date = time.gmtime(epoch )
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.