Sobes.tech
Junior — Middle

Деректер базасында бірнеше пайдаланушының бірдей деректерді бір уақытта өзгертуін қалай болдырмауға болады?

sobes.tech AI

AI-дан жауап

Базада бірдей деректерді бірнеше пайдаланушы бір уақытта өзгертуін болдырмау үшін блоктау және бәсекелестікке бақылау механизмдері қолданылады. Негізгі тәсілдер:

  1. Оптимистік блоктау — қақтығыстар сирек болады деп болжанады. Деректерді жаңартқанда, олар соңғы оқудан кейін өзгермегенін тексереді (мысалы, нұсқа немесе уақыт белгілері арқылы). Егер деректер өзгерсе, операция қайтарылады.

  2. Пессимистік блоктау — деректерді оқығанда немесе жаңартқанда блоктайды, сонда басқа транзакциялар оларды өзгерте алмайды.

Hibernate-де оптимистік блоктау үшін @Version аннотациясын қолдануға болады:

@Entity
public class Product {
    @Id
    private Long id;

    @Version
    private int version;

    private String name;
    // басқа өрістер
}

Жаңарту кезінде Hibernate нұсқаны тексереді және деректер басқа пайдаланушы тарапынан өзгертілсе, қателік шығарады.

Осылайша, тәсілді таңдау өнімділік талаптары мен қақтығыс жиілігіне байланысты.