
Realm은 휴대폰, 정제 또는웨어러블 내부에서 직접 실행되는 mobile database입니다. 이 리포지토리에는 C++ SDK Preview의 소스 코드가 있습니다.
Realm을 사용하는 이유
- 개발자의 직관적인 사용: Realm의 객체 지향 Realm 데이터 모델은 배우기 쉽고, ORM이 필요하지 않으며, 코드 작성 횟수를 줄여줍니다.
- 오프라인 사용을 위한 설계: Realm의 로컬 데이터베이스는 디스크에 데이터를 유지하므로 앱은 온라인과 마찬가지로 오프라인에서도 작동합니다.
- 모바일용으로 구축: 모든 기능을 갖춘 Realm은 가벼우며 메모리, 디스크 공간, 배터리 수명을 효율적으로 사용합니다.
- Realm Mobile Sync: 사용자, 디바이스, 백엔드의 데이터를 실시간으로 쉽게 동기화할 수 있습니다. 무료로 시작 하고 cloud 백엔드를 생성하세요.
객체 지향: 코드 간소화
Realm은 모바일 개발자를 위해 단순성을 염두에 두고 설계되었습니다. 관용적인 객체 지향 Realm 데이터 모델을 사용하면 수천 줄의 코드를 절약할 수 있습니다.
#include <cpprealm/sdk.hpp>
네임스페이스 영역 사용
구조체 개 {
std::문자열 이름;
int64_t 연령;
};
REALM_SCHEMA(개, 이름, 나이)
struct Person {
std::문자열 이름;
int64_t 연령;
개* 개;
};
REALM_SCHEMA(Person, _id, 이름, 연령, 개)
자동 개 = 개 { .name = "Rex", .age = 1 };
std:: cout << "name of dog: " << dog.name << std::endl;
자동 사람 = Person();
Person._id = "고유한 것";
Person.name = " John";
Person.dog = &dog;
자동 영역 =
db(std::move(config));
auto managed_people = realm.write([&realm, 사람(&P)] {
return realm.add(std::move(people));
});
자동 개 = Realm 객체<Dog>();
auto proxy_dogs = dogs.where([](auto& d) {
d.age > 2를 반환 합니다.
});
정의: managed_primary_key.hpp:72
라이브 객체: 반응형 앱 빌드
Realm의 라이브 객체는 어디에서든 업데이트된 데이터가 모든 곳에서 자동으로 업데이트된다는 것을 의미합니다.
자동 영역 =
db(std::move(config));
자동 개 = 개 { .name = "Max" };
auto managed = 영역.write([&영역, &dog] {
return realm.add(std::move(dog));
});
token = managed_dog. Observe([](auto&& 변경) {
if (change.error) {
std:: cout<<"오류가 발생했습니다: "<<error<< std::endl;
} 다른 경우 (change.is_deleted) {
std::coout<<"객체가 삭제되었습니다."<<std::endl;
} 기타 {
std::cout << "속성 " << 속성.name << "이(가) " << 속성.new_value(으)로 변경되었습니다. << std::endl;
}
}
realm.write([&managed_dog] {
managed_dog.name = "Wolfie"
});
데이터 동기화
Atlas Device Sync 를 사용하면 사용자, Realm Mobile Sync, 백엔드 전반에서 실시간으로 데이터를 간단하게 동기화할 수 있습니다.
자동 user = app.login(영역::App::credentials::anonymous()).get();
auto 영역 =
db(
user.flexible_sync_configuration());
auto cars = realm.results<Car>();
realm.write([&Cars](){
for (auto& car : 자동차) {
car.accelerate();
}
});
시작하기
자세한 지침은 Google Docs 를 참조하세요.
API 참고는 여기 를 참조하세요.
Realm 설치
전제 조건
Realm C++ SDK를 빌드하려면 CCreate 3.20 이상과 표준 빌드 도구 세트가 필요합니다. 여기에는 C/C++ 컴파일러와 GNU 메이크와 같은 빌드 시스템이 포함됩니다. Realm은 GCC와 Clang을 모두 사용하여 철저히 테스트되었습니다. GCC 8.3 이상 및 Clang 9 이상과 호환됩니다. 컴파일러가 C++17을 지원해야 합니다.
Ubuntu 18.04 이상
sudo apt-get install build-essential sudo apt-get install libcurl4-openssl-dev sudo apt-get install libuv1-dev sudo apt-get install libprocps-dev sudo apt-get install libssl-dev sudo apt -get install zlib1g-dev sudo apt-get install cmake
- 9 미만인 GCC 버전을 사용 중이고 SSL 연결 오류가 발생하는 경우
-DREALM_USE_SYSTEM_OPENSSL=ON
cmake 옵션을 추가합니다.
macOS
macOS에서는 기본적으로 Clang이 C/C++ 컴파일러로 사용됩니다. Clang은 Xcode의 일부로 설치됩니다. Xcode 13.1 이상이 필요하며 Mac App Store를 통해 설치할 수 있습니다.
brew라는 패키지 관리자를 사용하면 개발 환경을 편리하게 설정할 수 있습니다. 설치 지침은 https://brew.sh 를 참조하세요.
brew 설치cmake
Windows
Windows의 경우 브라우저에서 다음 웹사이트로 이동하여 적절한 설치 프로그램을 다운로드합니다.
건물
git submodule update --init --recursive
mkdir build.debug
cd build.debug
cmake -D CMAKE_BUILD_TYPE=debug ..
sudo cmake --build . --target install
그런 다음 -lcpprealm
을(를) 사용하여 라이브러리에 연결할 수 있습니다.
참고: 대상이 Windows인 경우 다음과 같이 대상에 MSVC_RUNTIME_LIBRARY
속성을 추가해야 합니다.
set_property(TARGET My_Target 속성
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") # 릴리스에서 빌드하는 경우 `CONFIG:Release>:Release`를 사용합니다.