NoSQL
- 'Not Only SQL' 의 약자
- 관계형 데이터베이스가 아닌 형태의 데이터 저장 기술을 의미하며, 관계형 데이터베이스가 가진 한계를 극복하기 위한 새로운 데이터베이스의 형태로 수평적 확장성을 가지고 있다.
- 클라우드 환경에 맞는 저장 기술
buildscripts{
repositories{
jcenter()
}
dependencies{
classpath "io.realm:realm-gradle-plugin:10.4.0"
}
}
allprojects{
repositories{
mavenCentral()
}
}
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'
realm {
syncEnabled = true
}
Realm.init(this)
// Realm 초기화 방식 설정하는 config 만들기
val config: RealmConfiguration = RealmConfiguration.Builder()
.allowWritesOnUiThread(true) // UI Thread에서도 realm에 접근할 수 있도록 한다.
.deleteRealmIfMigrationNeeded() // 데이터베이스의 틀에 변경사항이 생기면 저장되어있던 내용들을 모두 삭제
.build()
Realm.setDefaultConfiguration(config)
혹시나 해서 데이터를 조작하는 코드들을 Thread{}로 감싸주는 방법도 시도해보았지만 해결되지 않았다!
val realm = Realm.getDefaultInstance()
package com.example.myapplication
import io.realm.RealmObject
open class School : RealmObject(){
var name : String? = null
var location : String? = null
}
saveButton.setOnClickListener {
realm.executeTransaction {
with(it.createObject(School::class.java)) {
this.name = "한국 대학교"
this.location = "서울"
}
}
}
loadButton.setOnClickListener {
realm.executeTransaction {
val data = it.where(School::class.java).findFirst()
}
}
deleteButton.setOnClickListener {
realm.executeTransaction {
it.where(School::class.java).findAll().deleteAllFromRealm() // 모든 데이터 삭제
it.where(School::class.java).findFirst()?.deleteFromRealm() // 첫번째 데이터 삭제
}
}