Sequel কী?
Sequel হলো একটি জেম যা আপনাকে আপনার ডেটাবেস এক্সেস করতে দেয়, রেইলস ছাড়া।
আপনি ভিন্ন ভিন্নভাবে আপনার ডেটাবেসের সাথে কানেক্ট করতে পারেন।
প্রায়শই দুটি:
- র AWS SQL কমান্ড পাঠিয়ে
- একটি ORM ব্যবহার করে
এখানে একটি উদাহরণ, র AWS SQL এবং MySQL ডেটাবেস ব্যবহার করে।
require 'mysql2'
client = Mysql2::Client.new(host: "localhost")
results = client.query("SELECT * FROM users WHERE age > 21")
ফলাফল?
ডেটাসহ একটি হ্যাশের অ্যারে।
এখন:
আমরা যদি ডেটাটাকে অবজেক্ট-ওরিয়েন্টেডভাবে কাজ করতে চাই, তবে আমাদের রেজাল্টগুলোকে অবজেক্ট বানাতে হবে।
এটিই একটি ORM-এর বড় অংশ।
ORM কী?
ORM বলতে "Object-Relational-Mapping" বোঝায়।
Sequel, SQL (ডেটাবেসের জন্য একটি ক্যোয়ারী ল্যাঙ্গুয়েজ) এর ভোকালাইজেশন (উচ্চারণ) অনুযায়ী নামকৃত, একটি ORM।
চলুন শিখি কীভাবে ব্যবহার করবেন!
Sequel উদাহরণ: একটি ডেটাবেসের সাথে কানেক্ট করা
Sequel ব্যবহার শুরু করার প্রথম ধাপ হলো একটি ডেটাবেসের সাথে কানেক্ট করা।
এখানে একটি উদাহরণ:
require 'sequel'
DB = Sequel.sqlite('/tmp/testing.db')
এটি একটি Sequel::Database অবজেক্ট তৈরি করে এবং এটিকে DB-এ অ্যাসাইন করে।
এখানে আমরা SQLite3 ডেটাবেস ব্যবহার করছি।
কিন্তু আপনি অন্যগুলোও ব্যবহার করতে পারেন:
Sequel.postgresSequel.mysql2Sequel.oracle
এরপর কী?
আপনাকে ডেটা সংরক্ষণের জন্য একটি টেবিল তৈরি করতে হবে।
এটি কীভাবে তৈরি করবেন:
unless DB.table_exists?(:fruits)
DB.create_table :fruits do
primary_key :id
column :name, String
column :amount, Integer
end
end
এখানে একটি মাইগ্রেশন সিস্টেম আপনি ব্যবহার করতে পারেন।
কিন্তু এটি অপশনাল।
এখন আমরা ডেটা যোগ করা এবং ডেটাবেস ক্যোয়ারি করার জন্য রেডি!
Sequel Datasets কীভাবে ব্যবহার করবেন
আপনার ডেটাবেসের একটি নির্দিষ্ট টেবিলের সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার কাছে একটি ডেটাসেট অবজেক্ট দরকার।
এটি কীভাবে পাবেন:
table = DB[:fruits] # Sequel::SQLite::Dataset
দারুণ!
এখন আমরা insert মেথড দিয়ে কিছু রেকর্ড যোগ করতে পারি।
এভাবে:
table.insert(name: "Orange", amount: 10) table.insert(name: "Apple", amount: 2) table.insert(name: "Banana", amount: 7)
একটা কাউন্ট নিই:
table.count # 3
ডেটাসেটের সকল এন্ট্রি পাওয়া যাক:
table.all # [
# { id: 1, name: "Orange", amount: 10 },
# { id: 2, name: "Apple", amount: 2 },
# { id: 3, name: "Banana", amount: 7 }
# ]
ওহে! এটি হ্যাশের একটি অ্যারে जैसा দেখে।
ভালো, আপনি সঠিক বলছেন।
এটি ঠিক সেটিই।
Sequel আপনাকে মডেল ছাড়া ডেটাবেস ক্যোয়ারি করতে দেয়।
কিন্তু আমরা মডেলও ব্যবহার করতে পারি।
এখানে কীভাবে…
Sequel-এ মডেল কীভাবে ব্যবহার করবেন
একটি Sequel মডেল খুব চমৎকারি ActiveRecord মডেলের মত দেখে।
এখানে একটি উদাহরণ:
class Fruit < Sequel::Model end
মডেলগুলো একদম ডেটাসেটের মত behave করে, কিন্তু রেজাল্টগুলো মডেল ক্লাসে র্যাপ করে।
দेखুন:
Fruit.first # Fruit @values={:id=>1, :name=>"Orange", :amount=>10}
আমরা একই Sequel::Dataset মেথডগুলো ব্যবহার করতে পারি।
এখানে কোনো "ম্যাজিক" নেই।
অরো কিছু উদাহরণ:
Fruit.map(:name) # ["Orange", "Apple", "Banana"] Fruit.where(name: "Apple").or(amount: 10).map(:name) # ["Orange", "Apple"] Fruit.first[:amount] # 10
খুব সুন্দর!
Sequel বনাম ActiveRecord
এখন আপনি শিখেছেন Sequel কতটুকু অসাধারণ, আপনি জানতে চাইতে পারেন এটি ActiveRecord-এর সাথে কীভাবে তুলনায়।
ভালো, ActiveRecord রেইলসের ডিফল্ট ORM।
এবং রেইলস খুব বেশি কনভেনশন পছন্দ করে।
তাই আমি মনে করি রেইলস অ্যাপে ActiveRecord-কে Sequel- দিয়ে রিপ্লেস করার চেষ্টা করা অর্থহীন।
তবে।
আপনি যদি অন্য ফ্রেমওয়ার্ক ব্যবহার করেন, যেমন সিনাত্রা, তবে Sequel একটি দুর্দান্ত পছন্দ!
সারসংক্ষেপ
আপনি রুবিতে একটি ORM ব্যবহার করে ডেটাবেস নিয়ে কাজ করার পদ্ধতি শিখেছেন, এই কেসে, Sequel রুবি জেম।
এখন আপনার পালা এটি ট্রাই করার এবং মজা করার!
পড়ার জন্য ধন্যবাদ।