কোনও উত্তরের অভাবে আমি নিজেই আরও বিষয়টি অনুসন্ধান করেছি।
দেখে মনে হচ্ছে যে ব্যবহারকারী-সংজ্ঞায়িত ফাংশনগুলি সহ সমস্ত বেস প্রকারগুলি পরিচালনা করতে পারে bytea
এবং smallint[]
তাই, এটি উপস্থাপনের পছন্দকে বেশি প্রভাবিত করে না।
আমি একটি ভেনিলা কনফিগারেশন সহ একটি উইন্ডোজ 7 ল্যাপটপে স্থানীয়ভাবে চলমান পোস্টগ্রিসএসকিউএল 9.4 সার্ভারে বিভিন্ন বিভিন্ন উপস্থাপনা চেষ্টা করেছি। সেই প্রকৃত সংকেত ডেটা সংরক্ষণের জন্য সম্পর্কগুলি নীচে ছিল।
পুরো ফাইলের জন্য বড় অবজেক্ট
CREATE TABLE BlobFile (
eeg_id INTEGER PRIMARY KEY,
eeg_oid OID NOT NULL
);
চ্যানেল প্রতি ছোট ছোট অ্যারে
CREATE TABLE EpochChannelArray (
eeg_id INT NOT NULL,
epoch INT NOT NULL,
channel INT,
signal SMALLINT[] NOT NULL,
PRIMARY KEY (eeg_id, epoch, channel)
);
প্রতিটি পর্বে চ্যানেল প্রতি BYTEA
CREATE TABLE EpochChannelBytea (
eeg_id INT NOT NULL,
epoch INT NOT NULL,
channel INT,
signal BYTEA NOT NULL,
PRIMARY KEY (eeg_id, epoch, channel)
);
যুগে যুগে ছোট 2D অ্যারে
CREATE TABLE EpochArray (
eeg_id INT NOT NULL,
epoch INT NOT NULL,
signals SMALLINT[][] NOT NULL,
PRIMARY KEY (eeg_id, epoch)
);
প্রতিযোগিতায় বাইওয়াইটিএ অ্যারে
CREATE TABLE EpochBytea (
eeg_id INT NOT NULL,
epoch INT NOT NULL,
signals BYTEA NOT NULL,
PRIMARY KEY (eeg_id, epoch)
);
আমি তখন জাভা জেডিবিসির মাধ্যমে এই সম্পর্কের প্রত্যেকটিতে ইডিএফ ফাইলগুলির একটি নির্বাচন আমদানি করেছিলাম এবং প্রতিটি আপলোডের পরে ডাটাবেসের আকারের বৃদ্ধির তুলনা করি।
ফাইলগুলি ছিল:
- ফাইল এ: ১ channels টি চ্যানেলের ২২০po সূত্র, প্রতিটি চ্যানেল 1024 নমুনা (প্রতি পর্বে 16385 নমুনা), 85 এমবি
- বি বি: 11897 18 টি চ্যানেলের যুগ, প্রতিটি চ্যানেল 1024 নমুনা (প্রতি পর্বে 18432 নমুনা), 418 এমবি
- সি সি: 20 টি চ্যানেলের 11746 যুগের প্রতিটি চ্যানেল 64৪ থেকে ১০২৪ টি নমুনা (প্রতি পর্বে 17088 নমুনা), 382 এমবি
স্টোরেজ ব্যয়ের ক্ষেত্রে, প্রতিটি ক্ষেত্রে এমবিতে মাপের আকারটি এখানে রয়েছে:
মূল ফাইলের আকারের সাথে সম্পর্কিত, বড় অবজেক্টগুলি প্রায় 30-35% বড় ছিল। বিপরীতে, প্রতিটি যুগকে BYTEA বা SMALLINT হিসাবে সংরক্ষণ করা [] [] 10% এর চেয়ে কম বড় ছিল। প্রতিটি চ্যানেলকে আলাদা টিউপল হিসাবে সংরক্ষণ করা 40% বৃদ্ধি দেয়, উভয়ই BYTEA বা SMALLINT [] হয়, এটি কোনও বৃহত অবজেক্ট হিসাবে সংরক্ষণের চেয়ে খারাপ নয়।
একটি জিনিস যা আমি প্রথমে প্রশংসা করি নি তা হ'ল পোস্টগ্রেএসকিউএলে "বহুমাত্রিক অ্যারেগুলির প্রতিটি মাত্রার জন্য মেলানো এক্সটেন্টস থাকতে হবে" । এর অর্থ এই যে SMALLINT[][]
উপস্থাপনাটি কেবল তখনই কাজ করে যখন কোনও যুগের সমস্ত চ্যানেলের একই সংখ্যার নমুনা থাকে। সুতরাং ফাইল সি EpochArray
সম্পর্কের সাথে কাজ করতে ব্যর্থ ।
এক্সেস খরচ যেমন নিরিখে আমি এই সাথে প্রায় খেলেছে না, কিন্তু অন্তত তথ্য ঢোকাতে পরিপ্রেক্ষিতে প্রাথমিকভাবে দ্রুততম উপস্থাপনা ছিল EpochBytea
এবং BlobFile
সঙ্গে EpochChannelArray
ধীরতম, যেমন প্রথম দুই যতদিন 3 বার সম্পর্কে গ্রহণ।