প্রকল্প সম্পর্কে
# রিয়েলম ডেটাবেস সম্পর্কে
রিয়েলম হলো একটি মোবাইল ডেটাবেস যা সরাসরি ফোন, ট্যাবলেট বা পরিধেয় ডিভাইসের ভিতরে চলে। এই রিপোজিটরিতে রিয়েলম সুইফট ও রিয়েলম অবজেক্টিভ-সি-এর iOS, macOS, tvOS ও watchOS সংস্করণের সোর্স কোড রয়েছে।
## কেন রিয়েলম ব্যবহার করবেন
* **ডেভেলপারদের জন্য স্বজ্ঞাত:** রিয়েলমের অবজেক্ট-ওরিয়েন্টেড ডেটা মডেল শেখা সহজ, ORM-এর প্রয়োজন নেই এবং কম কোড লিখতে সাহায্য করে।
* **মোবাইলের জন্য নির্মিত:** রিয়েলম সম্পূর্ণ বৈশিষ্ট্যসম্পন্ন, হালকা ওজনের এবং মেমোরি, ডিস্ক স্পেস ও ব্যাটারি লাইফ দক্ষভাবে ব্যবহার করে।
* **অফলাইন ব্যবহারের জন্য ডিজাইন করা:** রিয়েলমের লোকাল ডেটাবেস ডেটা ডিস্কে সংরক্ষণ করে, তাই অ্যাপগুলো অনলাইনের মতো অফলাইনেও ভালো কাজ করে।
## অবজেক্ট-ওরিয়েন্টেড: আপনার কোড সহজ করুন
রিয়েলম মোবাইল ডেভেলপারদের জন্য সরলতার কথা মাথায় রেখে তৈরি করা হয়েছে। স্বাভাবিক, অবজেক্ট-ওরিয়েন্টেড ডেটা মডেল আপনার হাজার হাজার লাইন কোড বাঁচাতে পারে।
```swift
// আপনার মডেলগুলো সাধারণ সুইফট ক্লাসের মতো সংজ্ঞায়িত করুন
class Dog: Object {
@Persisted var name: String
@Persisted var age: Int
}
class Person: Object {
@Persisted(primaryKey: true) var _id: String
@Persisted var name: String
@Persisted var age: Int
// একটি Object ফিল্ডকে অন্য ক্লাসে নির্দেশ করে সম্পর্ক তৈরি করুন
@Persisted var dogs: List<Dog>
}
// এগুলো সাধারণ সুইফট অবজেক্টের মতো ব্যবহার করুন
let dog = Dog()
dog.name = "Rex"
dog.age = 1
print("name of dog: \(dog.name)")
// ডিফল্ট রিয়েলম পান
let realm = try! Realm()
// একটি রাইট ট্রানজেকশনের মাধ্যমে সহজেই আপনার ডেটা সংরক্ষণ করুন
try! realm.write {
realm.add(dog)
}
```
## লাইভ অবজেক্ট: রিঅ্যাক্টিভ অ্যাপ তৈরি করুন
রিয়েলমের লাইভ অবজেক্টের অর্থ হলো যেকোনো জায়গায় আপডেট হওয়া ডেটা স্বয়ংক্রিয়ভাবে সব জায়গায় আপডেট হয়।
```swift
// ডিফল্ট রিয়েলম খুলুন।
let realm = try! Realm()
var token: NotificationToken?
let dog = Dog()
dog.name = "Max"
// রিয়েলমে একটি কুকুর তৈরি করুন।
try! realm.write {
realm.add(dog)
}
// লিসেনার সেট আপ করুন ও অবজেক্ট নোটিফিকেশন পর্যবেক্ষণ করুন।
token = dog.observe { change in
switch change {
case .change(let properties):
for property in properties {
print("Property '\(property.name)' changed to '\(property.newValue!)'");
}
case .error(let error):
print("An error occurred: (error)")
case .deleted:
print("The object was deleted.")
}
}
// প্রভাব দেখতে কুকুরের নাম আপডেট করুন।
try! realm.write {
dog.name = "Wolfie"
}
```
### SwiftUI
রিয়েলম সরাসরি SwiftUI-এর সাথে সংহত হয়, আপনার ভিউ আপডেট করে যাতে আপনাকে করতে না হয়।
```swift
struct ContactsView: View {
@ObservedResults(Person.self) var persons
var body: some View {
List {
ForEach(persons) { person in
Text(person.name)
}
.onMove(perform: $persons.move)
.onDelete(perform: $persons.remove)
}.navigationBarItems(trailing:
Button("Add") {
$persons.append(Person())
}
)
}
}
```
## সম্পূর্ণ এনক্রিপ্টেড
ডেটা ট্রানজিটে এবং সংরক্ষণ অবস্থায় এনক্রিপ্ট করা যায়, যা সবচেয়ে সংবেদনশীল ডেটাও সুরক্ষিত রাখে।
```swift
// একটি র্যান্ডম এনক্রিপশন কী তৈরি করুন
var key = Data(count: 64)
_ = key.withUnsafeMutableBytes { (pointer: UnsafeMutableRawBufferPointer) in
guard let baseAddress = pointer.baseAddress else {
fatalError("Failed to obtain base address")
}
SecRandomCopyBytes(kSecRandomDefault, 64, baseAddress)
}
// কনফিগে এনক্রিপশন কী যোগ করুন এবং রিয়েলম খুলুন
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)
// রিয়েলম স্বাভাবিকভাবে ব্যবহার করুন
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")
```
## শুরু করা
আমরা সুইফট প্যাকেজ ম্যানেজার, CocoaPods, Carthage বা একটি ডায়নামিক XCFramework আমদানির মাধ্যমে রিয়েলম ইনস্টল করার সমর্থন করি।
আরও তথ্যের জন্য, আমাদের [কুইক স্টার্ট](docs/guides/quick-start.md) দেখুন।
## ডকুমেন্টেশন
ডকুমেন্টেশন [docs/](docs/README.md) ডিরেক্টরিতে পাওয়া যাবে।
API রেফারেন্স এই রিপোজিটরির মূল থেকে `sh build.sh docs` চালিয়ে [jazzy](https://github.com/realm/jazzy/) ব্যবহার করে সোর্স থেকে তৈরি করা যেতে পারে।
## সাহায্য পাওয়া
- **আপনার কোডে সাহায্য দরকার?**: স্ট্যাক ওভারফ্লোতে [`realm` ট্যাগ](https://stackoverflow.com/questions/tagged/realm?sort=newest) সহ আগের প্রশ্নগুলো দেখুন বা [নতুন প্রশ্ন করুন](https://stackoverflow.com/questions/ask?tags=realm)। স্ট্যাক ওভারফ্লোর জন্য খুব বিস্তৃত বলে বিবেচিত সাধারণ আলোচনার জন্য, [কমিউনিটি ফোরাম](https://developer.mongodb.com/community/forums/tags/c/realm-sdks/58/swift/) ব্যবহার করুন।
- **বাগ রিপোর্ট করতে চান?** [একটি GitHub ইস্যু খুলুন](https://github.com/realm/realm-swift/issues/new)। সম্ভব হলে, রিয়েলমের সংস্করণ, একটি সম্পূর্ণ লগ, রিয়েলম ফাইল এবং সমস্যাটি দেখায় এমন একটি প্রজেক্ট অন্তর্ভুক্ত করুন।
- **ফিচার অনুরোধ আছে?** [একটি GitHub ইস্যু খুলুন](https://github.com/realm/realm-swift/issues/new)। ফিচারটি কী করা উচিত এবং কেন আপনি ফিচারটি চান তা আমাদের বলুন।
## রিয়েলম তৈরি করা
আপনি যদি প্রি-কম্পাইলড সংস্করণ ব্যবহার করতে না চান, তাহলে আপনি সোর্স থেকে নিজেই রিয়েলম তৈরি করতে পারেন।
পূর্বশর্ত:
* রিয়েলম তৈরি করতে Xcode 15.3 বা তার নতুন প্রয়োজন।
* রিয়েলম ডকুমেন্টেশন তৈরি করতে [jazzy](https://github.com/realm/jazzy) প্রয়োজন।
সমস্ত প্রয়োজনীয় পূর্বশর্ত থাকলে, রিয়েলম তৈরি করতে শুধু একটি কমান্ড লাগে: `sh build.sh build`। প্রথমবার রিয়েলম তৈরি করার সময় কোর বাইনারি ডাউনলোড করতে আপনার ইন্টারনেট সংযোগের প্রয়োজন হবে। এটি `build/Release/`-এ Realm.xcframework এবং RealmSwift.xcframework তৈরি করবে।
আপনি যে সমস্ত কাজ করতে পারেন (ios/osx তৈরি, ডক্স তৈরি, টেস্ট ইত্যাদি) দেখতে `sh build.sh help` চালান।
## অবদান
আরও বিশদ বিবরণের জন্য [CONTRIBUTING.md](CONTRIBUTING.md) দেখুন!
## আচরণবিধি
এই প্রজেক্ট [MongoDB আচরণবিধি](https://www.mongodb.com/community-code-of-conduct) মেনে চলে। অংশগ্রহণের মাধ্যমে, আপনি এই কোড বজায় রাখবেন বলে আশা করা হচ্ছে। অনুগ্রহ করে অগ্রহণযোগ্য আচরণ [community-conduct@mongodb.com](mailto:community-conduct@mongodb.com)-এ রিপোর্ট করুন।
## লাইসেন্স
রিয়েলম অবজেক্টিভ-সি ও রিয়েলম সুইফট Apache 2.0 লাইসেন্সের অধীনে প্রকাশিত। রিয়েলম কোরও Apache 2.0 লাইসেন্সের অধীনে প্রকাশিত এবং [এখানে](https://github.com/realm/realm-core) উপলব্ধ।
## প্রতিক্রিয়া
**_আপনি যদি রিয়েলম ব্যবহার করেন এবং এতে সন্তুষ্ট হন, তাহলে আপনার মতামত শেয়ার করতে [@realm](https://twitter.com/realm)-কে উল্লেখ করে একটি টুইট পাঠানোর কথা বিবেচনা করুন!_**
**_আর যদি আপনি এটি পছন্দ না করেন, তাহলে অনুগ্রহ করে আমাদের জানান কী উন্নত করতে চান, যাতে আমরা এটি ঠিক করতে পারি!_**
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.