728x90
반응형

동시성 제어를 위한 의사컬럼 ORA_ROWSCN


1. 의사컬럼 ORA_ROWSCN

  oracle 10g부터 제공되는 동시성 제어를 위한 의사컬럼

 

사용예)

select   a.c2, a.ora_rowscn

into       :c2, :rowscn

from      xxx a

where   key1 = :k1

;

 

update xxx set c2 = 111

where   key1 = :k1 

and      ora_rowscn = :rowscn

;

 

if (sqlca.sqlcode == 1403) {

    printf("다른 사용자에 의해 변경되었습니다...\n");

}

 

2. 추가적으로 scn_to_timestamp(ora_rowscn) 함수

scn_to_timestamp 함수는 ora_rowscn의 타임스템프를 리턴한다.

단, sys.smon_scn_time 테이블을 기반으로 구현 되었으므로

해당 테이블의 삭제 주기인 5일이 경과하면 일시를 알 수 없게 되며

ora-8181오류가 발생한다.

 

3. autonomous 트란잭션 (sub commit)

 

stored procedure 내에서 pragma autonomous_transaction을 사용하여

서브커밋을 구현 할 수 있음.

 

예)

create or replace function xxx (aa number) return number

as

pragma autonomous_transaction;

 

begin

  update ...

  ;

 

  commit;

  return n;

end;

 

위의 펑션을 사용하는 프로그램은 위 스토어드 프로시져 내에서의 커밋에

영향을 받지 아니한다.

 

 

참고 : 오라클 성능 고도화 해법 - 조시형[b2en] 

 

728x90
반응형
728x90
반응형


1. 테이블 권한주기

GRANT [SELECT , INSERT, UPDATE, DELETE 등..] ON [권한 줄 테이블명] TO [권한 받을 사용자 계정]

 

예) 조회권한주기

GRANT SELECT ON TEST TO ADMIN;  //조회권한만 추가됨..

 


2. 함수 실행권한 주기

GRANT EXECUTE ON [권한 줄 함수명] TO [권한 줄 사용자명]

 

 

3. Sequence(시퀀스) 권한주기

GRANT [SELECT, ALTER] ON [소유계정.시퀀스] TO [대상계정]

 

 

4. SYNONYM 생성

먼저..

시노님(SYNONYM)이란 자신의 계정에서 다른 계정의 특정 테이블을 자신의 계정에서 볼 때 Alias(별칭)으로 정해 놓고, 그 테이블을 참조할 때 Alias로 참조한다.

 

CREATE SYNONYM [시노님명] FOR [소유계정.테이블명];

728x90
반응형

'Web Programming > database' 카테고리의 다른 글

오라클 아우터 조인 외부조인  (0) 2021.03.27
ORA-ROWSCN  (0) 2018.09.13
org.apache.ibatis.exceptions.PersistenceException  (0) 2018.09.04
mybatis if else choose  (0) 2018.08.30
ACID란?  (0) 2018.08.29
728x90
반응형

MVC Pattern

  • 사용자 인터페이스를 구성하는 대표적인 Pattern
  • MVC - Model / View / Controller

Model

  • 데이터
  • 상태
  • 비즈니스 로직이 포함이 되어있다.

View

  • 표현
  • 실제 유저 인터페이스
  • 최대한 로직이 포함이 되어있지 않아야 된다

Controller

  • View를 적절하게 생성 또는 업데이트한다.
  • Model의 상태를 변경을 할수가 있다.

일반적인 웹에서의 MVC


728x90
반응형
728x90
반응형

람다 아키텍처

LA overview
  1. new data, batch layer와 speed layer로 데이터가 들어온다.
  2. batch layer, batch layer는 2가지가 존재를 한다. 데이터를 저장하는 저장소 (append-only, immutable)와 view를 위해 미리 처리된(pre-complete)로 구별이 된다.
  3. serving layer, low latency와 adhoc 쿼리에 대한 뷰를 제공을 한다.
  4. speed layer, 최근 데이터와 대한 high latency의 update를 제공을 한다.
  5. query, batch view, realtime view를 통해 결과를 얻을수가 있다. 

Speed Components

  • Apache Storm
  • Apache Spark Streamming
  • Apache Samaza
  • Apache S4
  • Spring XD
  • AWS Kinesis
  • Google Cloud Dataflow

Real-time view

  • redis
  • mysql

Serving Components

  • HBase
  • ElephantDB
  • SploutSQL
  • ElephantDB
  • Druid
  • S3
  • HDFS

Batch view

  • cassandra
  • hbase
  • hive
  • presto
  • AWS Athena

Batch Components

  • Hadoop
  • mapReduce
  • Spark
  • Hive
  • Spark SQl
  • Pig
  • Spork
  • Cascading/Scalding
  • Cascalog
  • Crunch/SCrunch
  • Pangool

Reference

  • http://lambda-architecture.net/


728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

logback 설정 maxHistory  (0) 2021.03.31
NumberUtils.max()  (0) 2018.09.13
java Generic  (0) 2018.09.05
TDD 테스트 주도 개발방법론  (0) 2018.09.04
클래스 정보 가져오기 - 리플렉션  (0) 2018.09.04
728x90
반응형

Class generic example

public class GenericsType<T> {

private T t;
public T get(){
return this.t;
}
public void set(T t1){
this.t=t1;
}
}

Method generic example

public static double sum(List<? extends Number> list){
double sum = 0;
for(Number n : list){
sum += n.doubleValue();
}
return sum;
}
}


Interface generic example

public interface Comparable<T> {
    public int compareTo(T o);
}




Wildcard

  • Optional 같이 wrap이 되어있는 값들을 리턴할때 실제로 들어가 있는 값이 subclass이라고 해도 type cast이 되지 않는다. 이럴때에는 wildcard를 사용하여 문제점을 해결할수 있다.


class A {}


class B extends A {}


interface Sup { Optional<? extends A> a(); }


interface Sub extends Sup { Optional<? extends B> a(); }



728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

NumberUtils.max()  (0) 2018.09.13
람다 아키텍처  (0) 2018.09.05
TDD 테스트 주도 개발방법론  (0) 2018.09.04
클래스 정보 가져오기 - 리플렉션  (0) 2018.09.04
JSTL에서 LIST Size  (0) 2018.09.04

+ Recent posts