উপার্জন

অ্যামাজন রেডশিফ্টে আপনার ডেটা গুদাম স্থানান্তর ত্বরান্বিত করুন - পার্ট 2

উত্স নোড: 1858661

এটি একটি মাল্টি-পার্ট সিরিজের দ্বিতীয় পোস্ট। আমরা আপনার স্কিমা রূপান্তর স্বয়ংক্রিয় করার জন্য কয়েক ডজন নতুন বৈশিষ্ট্য ভাগ করে নিতে উত্তেজিত; বিদ্যমান স্ক্রিপ্ট, প্রতিবেদন এবং অ্যাপ্লিকেশনগুলিতে আপনার বিনিয়োগ সংরক্ষণ করুন; ক্যোয়ারী কর্মক্ষমতা ত্বরান্বিত; এবং সম্ভাব্য স্থানান্তর করার জন্য আপনার সামগ্রিক খরচ কমাতে পারে আমাজন রেডশিফ্ট. প্রথম পোস্ট দেখুন অ্যামাজন রেডশিফ্টে আপনার ডেটা গুদাম স্থানান্তর ত্বরান্বিত করুন - পার্ট 1 স্বয়ংক্রিয় ম্যাক্রো রূপান্তর, কেস-সংবেদনশীল স্ট্রিং তুলনা, কেস-সংবেদনশীল শনাক্তকারী এবং অন্যান্য উত্তেজনাপূর্ণ নতুন বৈশিষ্ট্য সম্পর্কে আরও জানতে।

Amazon Redshift হল নেতৃস্থানীয় ক্লাউড ডেটা গুদাম। অন্য কোন ডেটা গুদাম আপনার ডেটা থেকে নতুন অন্তর্দৃষ্টি অর্জন করা সহজ করে তোলে না। Amazon Redshift এর মাধ্যমে, আপনি স্ট্যান্ডার্ড SQL ব্যবহার করে আপনার ডেটা গুদাম, অপারেশনাল ডেটা স্টোর এবং ডেটা লেক জুড়ে ডেটার এক্সাবাইট অনুসন্ধান করতে পারেন। আপনি যেমন অন্যান্য পরিষেবাগুলিকে একীভূত করতে পারেন আমাজন ইএমআর, অ্যামাজন অ্যাথেনা, এবং আমাজন সেজমেকার AWS ক্লাউডে সমস্ত বিশ্লেষণী ক্ষমতা ব্যবহার করতে।

অনেক গ্রাহক তাদের স্ব-পরিচালিত ডেটা গুদাম ইঞ্জিনগুলিকে Amazon Redshift-এ স্থানান্তরিত করতে সাহায্য চেয়েছেন। এই ক্ষেত্রে, আপনার কাছে ঐতিহাসিক তথ্যের টেরাবাইট (বা পেটাবাইট) থাকতে পারে, মালিকানা বৈশিষ্ট্যের উপর একটি অত্যধিক নির্ভরতা এবং হাজার হাজার এক্সট্রাক্ট, ট্রান্সফর্ম এবং লোড (ETL) প্রক্রিয়া এবং বছরের (বা দশক) ব্যবহারে তৈরি রিপোর্ট থাকতে পারে।

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

আজ, আমরা অতিরিক্ত বর্ধনগুলি ভাগ করে নিতে পেরে আনন্দিত৷ AWS স্কিমা রূপান্তর টুল (AWS SCT) Amazon Redshift-এ আপনার মাইগ্রেশন স্বয়ংক্রিয় করতে। এই বর্ধিতকরণগুলি আপনার ডেটা টেবিলের জন্য প্রয়োজনীয় রিকোডিংকে হ্রাস করে এবং আরও গুরুত্বপূর্ণভাবে, দৃশ্য, সঞ্চিত পদ্ধতি, স্ক্রিপ্ট এবং সেই টেবিলগুলি ব্যবহার করে এমন অন্যান্য অ্যাপ্লিকেশন কোডের জন্য প্রয়োজনীয় ম্যানুয়াল কাজ।

এই পোস্টে, আমরা INTERVAL এবং PERIOD ডেটা টাইপ, স্বয়ংক্রিয় টাইপ কাস্টিং, বাইনারি ডেটা সাপোর্ট এবং গ্রাহকদের দ্বারা অনুরোধ করা অন্যান্য কিছু উন্নতির জন্য অটোমেশন প্রবর্তন করি৷ আমরা আপনাকে দেখাই কিভাবে AWS SCT ব্যবহার করে একটি Teradata ডেটা গুদাম থেকে বস্তুগুলিকে রূপান্তর করতে হয় এবং প্রাসঙ্গিক ডকুমেন্টেশনের লিঙ্কগুলি প্রদান করতে হয় যাতে আপনি এই নতুন ক্ষমতাগুলি অন্বেষণ চালিয়ে যেতে পারেন৷

INTERVAL ডেটা প্রকার

একটি INTERVAL হল একটি আন্যাঙ্কর করা সময়কাল, যেমন "1 বছর" বা "2 ঘন্টা", যার একটি নির্দিষ্ট শুরু বা শেষ সময় নেই। টেরাডাটাতে, INTERVAL ডেটা 13টি স্বতন্ত্র ডেটা টাইপ হিসাবে প্রয়োগ করা হয় যা প্রতিনিধিত্ব করা সময়ের গ্রানুলারিটির উপর নির্ভর করে। নিম্নলিখিত সারণী এই ধরনের সারসংক্ষেপ.

বছরের ব্যবধান মাসের ব্যবধান দিনের ব্যবধান ঘণ্টার ব্যবধান মিনিটের ব্যবধান দ্বিতীয় বিরতি

ব্যবধান বছর

ব্যবধান বছর থেকে মাস

ব্যবধান মাস

 

ব্যবধানের দিন

ব্যবধানের দিন থেকে ঘন্টা

ব্যবধান দিন থেকে মিনিট

ব্যবধানের দিন থেকে দ্বিতীয়

ব্যবধান ঘন্টা

ব্যবধান ঘন্টা থেকে মিনিট

ব্যবধান ঘন্টা থেকে সেকেন্ড

ইন্টারভাল মিনিট

ব্যবধান মিনিট থেকে সেকেন্ড

ব্যবধান সেকেন্ড

 

Amazon Redshift নেটিভভাবে INTERVAL ডেটা প্রকার সমর্থন করে না। পূর্বে, আপনি যদি আপনার ডেটা গুদামে INTERVAL প্রকারগুলি ব্যবহার করেন, তাহলে আপনাকে ডাটাবেস রূপান্তর প্রক্রিয়ার অংশ হিসাবে কাস্টম কোড বিকাশ করতে হবে।

এখন, AWS SCT স্বয়ংক্রিয়ভাবে আপনার জন্য INTERVAL ডেটা প্রকার রূপান্তর করে। AWS SCT Amazon Redshift-এ একটি INTERVAL কলামকে একটি অক্ষর পরিবর্তিত কলামে রূপান্তর করে৷ তারপর AWS SCT আপনার অ্যাপ্লিকেশন কোড রূপান্তর করে যা INTERVAL শব্দার্থবিদ্যা অনুকরণ করতে কলাম ব্যবহার করে।

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

CREATE TABLE testschema.loa_durations ( loa_type_id INTEGER
, loa_name VARCHAR(100) CHARACTER SET LATIN
, loa_duration INTERVAL MONTH(2))
PRIMARY INDEX (loa_type_id);

AWS SCT নিম্নরূপ টেবিলটিকে Amazon Redshift-এ রূপান্তর করে। যেহেতু Amazon Redshift-এর একটি নেটিভ INTERVAL ডেটা টাইপ নেই, তাই AWS SCT এটিকে VARCHAR ডেটা টাইপ দিয়ে প্রতিস্থাপন করে।

CREATE TABLE testschema.loa_durations( loa_type_id INTEGER
, loa_name VARCHAR(100)
, loa_duration VARCHAR(64)
)
DISTSTYLE KEY
DISTKEY
(
loa_type_id
)
SORTKEY
(
loa_type_id
);

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

REPLACE VIEW testschema.loa_projected_end_date AS
SELECT loa_type_id loa_type_id
, loa_name loa_name
, loa_duration
, current_date AS today
, current_date + loa_duration AS end_date
FROM
testschema.loa_durations
;

যেহেতু ডেটা চরিত্রের ভিন্নতা হিসাবে সংরক্ষণ করা হয়, তাই AWS SCT স্ট্রিং মানগুলিকে একটি মাসের ব্যবধান হিসাবে ব্যাখ্যা করতে অ্যামাজন রেডশিফ্ট কোডে সঠিক টাইপ CAST ইনজেক্ট করে৷ এটি তখন অ্যামাজন রেডশিফ্ট তারিখ ফাংশন ব্যবহার করে গাণিতিক রূপান্তর করে।

CREATE OR REPLACE VIEW testschema.loa_projected_end_date (loa_type_id, loa_name, loa_duration, today, end_date) AS
SELECT loa_type_id AS loa_type_id
, loa_name AS loa_name
, loa_duration
, CURRENT_DATE AS today
, dateadd(MONTH, CAST (loa_duration AS INTEGER),CURRENT_DATE)::DATE AS end_date
FROM testschema.loa_durations
;

এছাড়াও, বোনাস হিসাবে, AWS SCT স্বয়ংক্রিয়ভাবে যেকোন আক্ষরিক INTERVAL মানগুলিকে রূপান্তর করে যা আপনি আপনার কোডে ব্যবহার করছেন।

উদাহরণস্বরূপ, নিম্নলিখিত টেরাডাটা টেবিলটি বিবেচনা করুন। সারণীতে একটি DATE কলাম রয়েছে, যা একজন কর্মচারীর পদোন্নতির শেষ তারিখটি রেকর্ড করে।

CREATE TABLE TESTSCHEMA.employees ( id INTEGER
, name VARCHAR(20) CHARACTER SET LATIN NOT CASESPECIFIC
, manager_id INTEGER
, last_promo_date DATE FORMAT 'YY/MM/DD'
)
UNIQUE PRIMARY INDEX ( id );

এখন, ধরুন ডাটাবেসটিতে এমন একটি দৃশ্য রয়েছে যা একজন কর্মচারী পদোন্নতির জন্য যোগ্য পরবর্তী তারিখ গণনা করে। আমরা একটি ব্যবসায়িক নিয়ম প্রয়োগ করি যে কর্মচারীরা যারা কখনও পদোন্নতি পাননি তারা 1.5 বছরে পদোন্নতির জন্য যোগ্য। অন্যান্য সমস্ত কর্মচারী তাদের শেষ পদোন্নতির 2.5 বছর পরে যোগ্য হয়ে ওঠে। নিম্নলিখিত কোড দেখুন:

REPLACE VIEW testschema.eligible_for_promo AS
SELECT id
, name
, last_promo_date
, CASE WHEN last_promo_date is NULL THEN current_date + INTERVAL '18' MONTH ELSE last_promo_date + INTERVAL '2-06' YEAR TO MONTH END eligible_date
FROM employees
;

AWS SCT CASE স্টেটমেন্টে ব্যবহৃত INTERVAL মানগুলিকে রূপান্তর করে এবং সেই অনুযায়ী তারিখের অভিব্যক্তিগুলি অনুবাদ করে:

CREATE OR REPLACE VIEW testschema.eligible_for_promo (id, name, last_promo_date, eligible_date) AS
SELECT id
, name
, last_promo_date
, CASE WHEN last_promo_date IS NULL THEN dateadd(MONTH, 18, CURRENT_DATE)::DATE ELSE dateadd(MONTH, 30, last_promo_date)::DATE END AS eligible_date
FROM testschema.employees
;

আমরা AWS SCT-এ INTERVAL স্বয়ংক্রিয়করণ সম্পর্কে উত্তেজিত এবং এটি চেষ্টা করার জন্য আপনাকে উত্সাহিত করি৷ AWS SCT দিয়ে শুরু করার বিষয়ে আরও তথ্যের জন্য, দেখুন AWS SCT ইনস্টল করা, যাচাই করা এবং আপডেট করা.

PERIOD ডেটা টাইপ

একটি PERIOD ডেটা মান একটি নির্দিষ্ট শুরু এবং শেষ সহ সময়ের একটি সময়কাল উপস্থাপন করে৷ উদাহরণস্বরূপ, Teradata আক্ষরিক “(2021-01-01 to 2021-01-31)” 31 দিনের একটি সময়কাল যা যথাক্রমে জানুয়ারী 2021 এর প্রথম এবং শেষ দিনে শুরু এবং শেষ হয়। PERIOD ডেটা প্রকারের তিনটি ভিন্ন গ্রানুলারিটি থাকতে পারে: DATE, TIME বা TIMESTAMP৷ নিম্নলিখিত সারণী কিছু উদাহরণ প্রদান করে।

পিরিয়ড টাইপ উদাহরণ
PERIOD(তারিখ) "(2021-01-01 থেকে 2021-01-31) "
PERIOD(সময়) “(12:00:00 to 13:00:00)”
পিরিয়ড(টাইমস্ট্যাম্প) “(2021-01-31 00:00:00 to 2021-01-31 23:59:59)”

INTERVAL-এর মতো, PERIOD ডেটা টাইপ স্থানীয়ভাবে Amazon Redshift দ্বারা সমর্থিত নয়৷ পূর্বে, আপনি যদি আপনার টেবিলে এই ডেটা প্রকারগুলি ব্যবহার করেন তবে আপনাকে ডাটাবেস রূপান্তর প্রক্রিয়ার অংশ হিসাবে কাস্টম কোড লিখতে হবে।

এখন, AWS SCT স্বয়ংক্রিয়ভাবে আপনার জন্য PERIOD ডেটা প্রকার রূপান্তর করে। AWS SCT একটি PERIOD কলামকে Amazon Redshift-এ উপযুক্ত হিসাবে দুটি DATE (বা TIME বা TIMESTAMP) কলামে রূপান্তর করে৷ তারপর AWS SCT আপনার অ্যাপ্লিকেশন কোড রূপান্তর করে যা উৎস ইঞ্জিন শব্দার্থবিদ্যা অনুকরণ করতে কলাম ব্যবহার করে।

উদাহরণস্বরূপ, নিম্নলিখিত Teradata টেবিল বিবেচনা করুন:

CREATE SET TABLE testschema.period_table ( id INTEGER
, period_col PERIOD(timestamp)) UNIQUE PRIMARY INDEX (id);

AWS SCT অ্যামাজন রেডশিফ্টে PERIOD(TIMESTAMP) কলামটিকে দুটি TIMESTAMP কলামে রূপান্তর করে:

CREATE TABLE IF NOT EXISTS testschema.period_table( id INTEGER
, period_col_begin TIMESTAMP
, period_col_end TIMESTAMP
)
DISTSTYLE KEY
DISTKEY
(id)
SORTKEY
(id);

এখন, আপনার অ্যাপ্লিকেশন কোড রূপান্তর করতে আপনি কিভাবে AWS SCT ব্যবহার করতে পারেন তার একটি সহজ উদাহরণ দেখি। টেরাডাটাতে একটি সাধারণ ক্রিয়াকলাপ হল BEGIN এবং END বিল্ট-ইন ফাংশন ব্যবহার করে একটি PERIOD মানের শুরু (বা শেষ) টাইমস্ট্যাম্পগুলি বের করা:

REPLACE VIEW testschema.period_view_begin_end AS SELECT BEGIN(period_col) AS period_start
, END(period_col) AS period_end FROM testschema.period_table
;

AWS SCT রূপান্তরিত সারণি কলামের রেফারেন্স করতে ভিউকে রূপান্তর করে:

CREATE OR REPLACE VIEW testschema.period_view_begin_end (period_start, period_end) AS
SELECT period_col_begin AS period_start
, period_col_end AS period_end
FROM testschema.period_table;

আমরা PERIOD ডেটা রূপান্তরের জন্য অটোমেশন তৈরি করা চালিয়ে যাব, তাই আরও উন্নতির জন্য সাথে থাকুন৷ ইতিমধ্যে, আপনি এখন AWS SCT-এ PERIOD ডেটা টাইপ রূপান্তর বৈশিষ্ট্যগুলি চেষ্টা করে দেখতে পারেন৷ আরও তথ্যের জন্য, দেখুন AWS SCT ইনস্টল করা, যাচাই করা এবং আপডেট করা.

টাইপ ঢালাই

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

পূর্বে, আপনাকে আপনার SQL কোডে অন্তর্নিহিত কাস্ট অপারেশনগুলিকে ম্যানুয়ালি রূপান্তর করতে হয়েছিল। এখন, আমরা শেয়ার করতে পেরে আনন্দিত যে AWS SCT স্বয়ংক্রিয়ভাবে প্রয়োজন অনুসারে অন্তর্নিহিত কাস্টগুলিকে রূপান্তর করে। এই বৈশিষ্ট্যটি এখন উচ্চ-প্রভাব টেরাডাটা ডেটা প্রকারের নিম্নলিখিত সেটগুলির জন্য উপলব্ধ।

বিভাগ উৎস ডেটা টাইপ টার্গেট ডেটা প্রকার
সাংখ্যিক চর বিগিন্ট
NUMBER টি
টাইমস্ট্যাম্প
ভোরচার NUMBER টি
সংখ্যা
ডিসেম্বর
চর
জ্যামিতি
শর্তযুক্ত DATE তারিখে
ডিসেম্বর
বিগিন্ট DATE তারিখে
NUMBER টি চরিত্র
ভোরচার
ডিসেম্বর
DECIMAL DATE তারিখে
টাইমস্ট্যাম্প
ছোট
ডাবল প্রেসিশন
ভাসা ডিসেম্বর
সময় DATE তারিখে বিগিন্ট
শর্তযুক্ত
DECIMAL
ভাসা
NUMBER টি
চরিত্র
টাইমস্ট্যাম্প
অন্তর NUMBER টি
বিগিন্ট
শর্তযুক্ত
অন্যান্য জ্যামিতি DECIMAL

আসুন দেখি কিভাবে DATE-এ নম্বর কাস্ট করা যায়। অনেক টেরাডাটা অ্যাপ্লিকেশন সংখ্যা এবং DATE কে সমতুল্য মান হিসাবে বিবেচনা করে। অভ্যন্তরীণভাবে, টেরাডাটা DATE এর মানগুলিকে INTEGEER হিসাবে সংরক্ষণ করে৷ একটি পূর্ণসংখ্যা এবং একটি তারিখের মধ্যে রূপান্তর করার নিয়মগুলি সুপরিচিত এবং বিকাশকারীরা সাধারণত INTEGEER পাটিগণিত ব্যবহার করে তারিখ গণনা করার জন্য এই তথ্যগুলিকে কাজে লাগায়৷

উদাহরণস্বরূপ, নিম্নলিখিত Teradata টেবিল বিবেচনা করুন:

CREATE TABLE testschema.employees ( id INTEGER
, name VARCHAR(20) CHARACTER SET LATIN
, manager_id INTEGER
, last_promo_date DATE FORMAT 'YY/MM/DD')
UNIQUE PRIMARY INDEX ( id );

আমরা টেবিলে ডেটার একটি একক সারি সন্নিবেশ করি:

select * from employees; *** Query completed. One row found. 4 columns returned. *** Total elapsed time was 1 second. id name manager_id last_promo_date
----------- -------------------- ----------- --------------- 112 Britney 201 ?

আমরা আপডেট করতে একটি ম্যাক্রো ব্যবহার করি last_promo_date জন্য ক্ষেত্র id = 112. DATE ক্ষেত্রটি পূরণ করতে ম্যাক্রো একটি BIGINT প্যারামিটার গ্রহণ করে৷

replace macro testschema.set_last_promo_date(emp_id integer, emp_promo_date bigint) AS (
update testschema.employees
set last_promo_date = :emp_promo_date
where id = :emp_id;
);

এখন, আমরা ম্যাক্রো চালাই এবং এর মান পরীক্ষা করি last_promo_date অ্যাট্রিবিউট:

exec testschema.set_last_promo_date(112, 1410330); *** Update completed. One row changed. *** Total elapsed time was 1 second. select * from employees; *** Query completed. One row found. 4 columns returned. *** Total elapsed time was 1 second. id name manager_id last_promo_date
----------- -------------------- ----------- --------------- 112 Britney 201 41/03/30

আপনি দেখতে পারেন last_promo_date বৈশিষ্ট্যটি 30 মার্চ, 2041 তারিখে সেট করা হয়েছে।

এখন, টেবিল এবং ম্যাক্রোকে Amazon Redshift-এ রূপান্তর করতে AWS SCT ব্যবহার করা যাক। আমরা যেমন দেখেছি পার্ট 1 এই সিরিজের, AWS SCT Teradata ম্যাক্রোকে একটি Amazon Redshift সংরক্ষিত পদ্ধতিতে রূপান্তর করে:

CREATE TABLE IF NOT EXISTS testschema.employees( id INTEGER
, name CHARACTER VARYING(20) , manager_id INTEGER
, last_promo_date DATE
)
DISTSTYLE KEY
DISTKEY
(id)
SORTKEY
(id); CREATE OR REPLACE PROCEDURE testschema.set_last_promo_date(par_emp_id INTEGER, par_emp_promo_date BIGINT)
AS $BODY$
BEGIN UPDATE testschema.employees SET last_promo_date = TO_DATE((par_emp_promo_date + 19000000), 'YYYYMMDD') WHERE id = par_emp_id;
END;
$BODY$
LANGUAGE plpgsql;

উল্লেখ্য 20410330 = 1410330 + 19000000; তাই ইনপুটে 19,000,000 যোগ করলে সঠিক তারিখের মান 2041-03-30 পাওয়া যায়।

এখন, যখন আমরা সঞ্চিত পদ্ধতি চালাই, এটি আপডেট করে last_promo_date প্রত্যাশিত:

myredshift=# select * from testschema.employees; id | name | manager_id | last_promo_date 112 | Britney | 201 |
(1 row) myredshift=# call testschema.set_last_promo_date(112, 1410330);
CALL myredshift=# select * from testschema.employees; id | name | manager_id | last_promo_date 112 | Britney | 201 | 2041-03-30
(1 row)

স্বয়ংক্রিয় ডেটা টাইপ কাস্টিং এখন AWS SCT-এ উপলব্ধ। তুমি পারবে সর্বশেষ সংস্করণ ডাউনলোড করুন এবং এটি চেষ্টা করে দেখুন।

BLOB ডেটা

Amazon Redshift BLOB কলামগুলির জন্য নেটিভ সমর্থন নেই, যা আপনি পাঠ্য বা চিত্রের মতো বড় বাইনারি বস্তু সংরক্ষণ করতে ব্যবহার করেন।

পূর্বে, যদি আপনি একটি BLOB কলামের সাথে একটি টেবিল স্থানান্তর করতে থাকেন, তাহলে আপনাকে ম্যানুয়ালি BLOB মানগুলি ফাইল স্টোরেজে স্থানান্তর করতে হবে, যেমন আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3), তারপর টেবিলে S3 ফাইলের একটি রেফারেন্স যোগ করুন। বাইনারি অবজেক্টের স্টোরেজ টার্গেট হিসাবে Amazon S3 ব্যবহার করা একটি সর্বোত্তম অনুশীলন কারণ এই বস্তুগুলি বড় এবং সাধারণত কম বিশ্লেষণাত্মক মান থাকে।

আমরা শেয়ার করতে পেরে খুশি যে AWS SCT এখন আপনার জন্য এই প্রক্রিয়াটিকে স্বয়ংক্রিয় করে। AWS SCT লক্ষ্য টেবিলে একটি অক্ষর পরিবর্তিত কলাম দিয়ে BLOB কলাম প্রতিস্থাপন করে। তারপর, আপনি যখন ব্যবহার করুন AWS SCT ডেটা এক্সট্র্যাক্টর আপনার ডেটা স্থানান্তর করতে, এক্সট্রাক্টররা অ্যামাজন S3-এ BLOB মান আপলোড করে এবং লক্ষ্য টেবিলে BLOB-এর একটি রেফারেন্স সন্নিবেশ করে।

উদাহরণস্বরূপ, আসুন টেরাডাটাতে একটি টেবিল তৈরি করি এবং কিছু ডেটা দিয়ে এটি পূরণ করি:

CREATE SET TABLE TESTSCHEMA.blob_table ( id INTEGER
, blob_col BLOB(10485760))
PRIMARY INDEX ( id ); select * from blob_table; *** Query completed. 2 rows found. 2 columns returned. *** Total elapsed time was 1 second. id blob_col
----------- --------------------------------------------------------------- 1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

এখন, আমরা টেবিলটিকে AWS SCT দিয়ে রূপান্তর করি এবং এটিকে Amazon Redshift-এ তৈরি করি:

myredshift=# d testschema.blob_table; Table "testschema.blob_table"
Column | Type | Collation | Nullable | Default id | integer |. | | blob_col | character varying(1300) | | |

তারপরে আমরা টেরাডাটা থেকে অ্যামাজন রেডশিফটে টেবিল ডেটা স্থানান্তর করতে AWS SCT ডেটা এক্সট্র্যাক্টর ব্যবহার করি।

যখন আমরা অ্যামাজন রেডশিফ্টের টেবিলটি দেখি, তখন আপনি S3 ফাইলগুলির পাথগুলি দেখতে পাবেন যেগুলিতে BLOB মান রয়েছে:

myredshift=# select * from testschema.blob_table;
(2 rows) id | blob_col 2 | s3://<bucket name>/data/c12f53330dd3427a845a77f143d4a1a1/dbdee8e0485c481dad601fd6170fbfb4_lobs/2/308b6f0a902941e793212058570cdda5.dat 1 | s3://<bucket name>/data/c12f53330dd3427a845a77f143d4a1a1/dbdee8e0485c481dad601fd6170fbfb4_lobs/2/a7686067af5549479b52d81e83c3871e.dat

এবং Amazon S3 এ, আপনি প্রকৃত ডেটা ফাইল দেখতে পারেন। প্রতিটি BLOB মানের জন্য দুটি, একটি রয়েছে:

$ aws s3 ls s3://<bucket name>/data/c12f53330dd3427a845a77f143d4a1a1/dbdee8e0485c481dad601fd6170fbfb4_lobs/2/
2021-05-13 23:59:47 23 522fee54fda5472fbae790f43e36cba1.dat
2021-05-13 23:59:47 24 5de6c53831f741629476e2c2cbc6b226.dat

BLOB সমর্থন এখন AWS SCT এবং AWS SCT ডেটা এক্সট্র্যাক্টরগুলিতে উপলব্ধ। সর্বশেষ সংস্করণটি ডাউনলোড করুন অ্যাপ্লিকেশন এবং আজ এটি চেষ্টা করে দেখুন.

মাল্টি-বাইট চরিত্র রূপান্তর

টেরাডাটা CHARACTER ডেটা কলামে মাল্টিবাইট অক্ষর সমর্থন করে, যা নির্দিষ্ট দৈর্ঘ্যের ক্ষেত্র। অ্যামাজন রেডশিফ্ট অক্ষর পরিবর্তিত ক্ষেত্রে মাল্টিবাইট অক্ষর সমর্থন করে কিন্তু নির্দিষ্ট দৈর্ঘ্যের অক্ষর কলামে নয়।

পূর্বে, যদি আপনার নির্দিষ্ট দৈর্ঘ্যের CHARACTER কলাম থাকে, তাহলে আপনাকে নির্ধারণ করতে হবে যে সেগুলিতে মাল্টিবাইট অক্ষর ডেটা রয়েছে কিনা এবং লক্ষ্য কলামের আকার যথাযথভাবে বাড়াতে হবে।

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

create table testschema.char_table ( latin_col char(70) character set latin
, unicode_col char(70) character set unicode
, graphic_col char(70) character set graphic
, kanjisjis_col char(70) character set kanjisjis
);

AWS SCT ল্যাটিন কলামটিকে একটি নির্দিষ্ট দৈর্ঘ্যের CHARACTER কলামে অনুবাদ করে। মাল্টি-বাইট কলামগুলিকে বড় করা হয় এবং চরিত্রের ভিন্নতায় রূপান্তরিত করা হয়:

CREATE TABLE IF NOT EXISTS testschema.char_table ( latin_col CHARACTER(70)
, unicode_col CHARACTER VARYING(210)
, graphic_col CHARACTER VARYING(210)
, kanjisjis_col CHARACTER VARYING(210)
)
DISTSTYLE KEY
DISTKEY
(col1)
SORTKEY
(col1);

মাল্টিবাইট CHARACTER কলামের জন্য স্বয়ংক্রিয় রূপান্তর এখন AWS SCT-এ উপলব্ধ।

জ্যামিতি ডেটা টাইপ আকার

অ্যামাজন রেডশিফ্ট দীর্ঘদিন ধরে একটি সহ ভূ-স্থানিক ডেটা সমর্থন করেছে জ্যামিতি ডেটা টাইপ এবং সংশ্লিষ্ট স্থানিক ফাংশন।

পূর্বে, আমাজন রেডশিফ্ট একটি জ্যামিতি কলামের সর্বোচ্চ আকার 64 KB-তে সীমাবদ্ধ করেছিল, যা কিছু গ্রাহককে বড় বস্তুর সাথে সীমাবদ্ধ করেছিল। এখন, আমরা ভাগ করে নিতে পেরে খুশি যে জিওমেট্রি অবজেক্টের সর্বোচ্চ আকার মাত্র 1 এমবি (বিশেষত, 1,048,447 বাইট) এর নিচে বাড়ানো হয়েছে।

উদাহরণস্বরূপ, নিম্নলিখিত Teradata টেবিল বিবেচনা করুন:

create table geometry_table ( id INTEGER
, geometry_col1 ST_GEOMETRY , geometry_col2 ST_GEOMETRY(1000)
, geometry_col3 ST_GEOMETRY(1048447) , geometry_col4 ST_GEOMETRY(10484470)
, geometry_col5 ST_GEOMETRY INLINE LENGTH 1000
)
;

আপনি এটিকে Amazon Redshift এ রূপান্তর করতে AWS SCT ব্যবহার করতে পারেন। রূপান্তরিত টেবিলের সংজ্ঞা নিম্নরূপ। রূপান্তরিত কলামগুলিতে একটি আকারের স্পেসিফিকেশন প্রয়োজন হয় না কারণ Amazon Redshift নিহিতভাবে কলামের আকার সেট করে।

CREATE TABLE IF NOT EXISTS testschema.geometry_table(
id INTEGER,
geometry_col1 GEOMETRY,
geometry_col2 GEOMETRY,
geometry_col3 GEOMETRY,
geometry_col4 GEOMETRY,
geometry_col5 GEOMETRY
)
DISTSTYLE KEY
DISTKEY
(
id
)
SORTKEY
(
id
);
ALTER TABLE testschema.geometry_table ALTER DISTSTYLE AUTO;
ALTER TABLE testschema.geometry_table ALTER SORTKEY AUTO;

অ্যামাজন রেডশিফটে এখন বড় জ্যামিতি কলাম পাওয়া যাচ্ছে। আরও তথ্যের জন্য, দেখুন অ্যামাজন রেডশিফ্টে স্থানিক ডেটা অনুসন্ধান করা হচ্ছে.

উপসংহার

আমরা আপনার সাথে এই নতুন বৈশিষ্ট্যগুলি ভাগ করতে পেরে খুশি৷ আপনি যদি Amazon Redshift-এ স্থানান্তরের কথা ভাবছেন, তাহলে এই ক্ষমতাগুলি আপনার স্কিমা রূপান্তর স্বয়ংক্রিয় করতে এবং বিদ্যমান রিপোর্ট, অ্যাপ্লিকেশন এবং ETL-এ আপনার বিনিয়োগ সংরক্ষণ করতে সাহায্য করতে পারে, সেইসাথে আপনার ক্যোয়ারী কর্মক্ষমতা ত্বরান্বিত করতে পারে।

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

আরও তথ্যের জন্য শীঘ্রই আবার চেক করুন। ততক্ষণ পর্যন্ত, আপনি সম্পর্কে আরও জানতে পারেন আমাজন রেডশিফ্ট এবং AWS স্কিমা রূপান্তর টুল AWS ওয়েবসাইটে। শুভ অভিবাসন!


লেখক সম্পর্কে

মাইকেল সু অ্যামাজন ওয়েব সার্ভিসে AWS DMS এবং AWS SCT টিমের সাথে একজন ডাটাবেস ইঞ্জিনিয়ার।

সূত্র: https://aws.amazon.com/blogs/big-data/part-2-accelerate-your-data-warehouse-migration-to-amazon-redshift/

সময় স্ট্যাম্প:

থেকে আরো ডেস্কটপ AWS