Деректер базасында бірнеше пайдаланушының бірдей деректерді бір уақытта өзгертуін қалай болдырмауға болады?
sobes.tech AI
AI-дан жауап
Базада бірдей деректерді бірнеше пайдаланушы бір уақытта өзгертуін болдырмау үшін блоктау және бәсекелестікке бақылау механизмдері қолданылады. Негізгі тәсілдер:
-
Оптимистік блоктау — қақтығыстар сирек болады деп болжанады. Деректерді жаңартқанда, олар соңғы оқудан кейін өзгермегенін тексереді (мысалы, нұсқа немесе уақыт белгілері арқылы). Егер деректер өзгерсе, операция қайтарылады.
-
Пессимистік блоктау — деректерді оқығанда немесе жаңартқанда блоктайды, сонда басқа транзакциялар оларды өзгерте алмайды.
Hibernate-де оптимистік блоктау үшін @Version аннотациясын қолдануға болады:
@Entity
public class Product {
@Id
private Long id;
@Version
private int version;
private String name;
// басқа өрістер
}
Жаңарту кезінде Hibernate нұсқаны тексереді және деректер басқа пайдаланушы тарапынан өзгертілсе, қателік шығарады.
Осылайша, тәсілді таңдау өнімділік талаптары мен қақтығыс жиілігіне байланысты.