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

# রিয়েলম ডেটাবেস সম্পর্কে রিয়েলম হলো একটি মোবাইল ডেটাবেস যা সরাসরি ফোন, ট্যাবলেট বা পরিধেয় ডিভাইসের ভিতরে চলে। এই রিপোজিটরিতে রিয়েলম সুইফট ও রিয়েলম অবজেক্টিভ-সি-এর 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)-কে উল্লেখ করে একটি টুইট পাঠানোর কথা বিবেচনা করুন!_** **_আর যদি আপনি এটি পছন্দ না করেন, তাহলে অনুগ্রহ করে আমাদের জানান কী উন্নত করতে চান, যাতে আমরা এটি ঠিক করতে পারি!_**