데이터 입출력 보다는 안정성에 대해서 이야기하고자 합니다.
데이터 입출력을 어떤 방법으로 하시는지요?
RDBMS 를 언급하셨는데 혹시 SQL을 사용하시는지요?
아니면 Cache script를 사용하시는지요?
아니면 M 루틴만 사용하시는지요?
M루틴만 사용할 때는 문제가 안되지만
스크립트나 SQL문을 사용하시고자 한다면
두개의 테이블을 하나의 글로벌에 저장하는 두번째 방법은
문제 발생 여지가 있다고 보여집니다.
^User(ID,Level)="Memo"
이 먼저 저장되어 있을 때
^User(ID)="Name,Address,Telephone,EMail"
는 저장이 불가능합니다.
^User(ID
부분이 Unique 충돌이 나기 때문이죠.
단순 글로벌이 아닌 클래스 형태로 Unique Key속성을 가지고 있는 것은
스크립트나 SQL로 저장이 불가능합니다.
물론 User 먼저 등록하고 삭제할 일이 없다면 문제가 없겠지만
예외 상황은 언제나 한 번은 발생하고 마는 것이니까요.
(얘 왜? 발생하는지....)
그렇게 저장 불가능한 상황이 발생했을 때
M 루틴으로 입력하거나
하위 노드를 모두 백업한 후에 모두 삭제하고서야
상위 노드가 새로 등록이 가능하고 그 이후에
하위노드의 데이터를 다시 복구해주어야 합니다.
M루틴만 사용하는 것이 아니라면 그리고 클래스를 사용하신다면
두 개의 클래스를 하나의 글로벌에 저장하는 것은 피하시라고 말씀드리고 싶습니다.
제 생각에는 만약 두개의 정보가 1:1 관계라면
^User(ID)="Name,Address,Telephone,EMail,Level,Memo"
구분하지 말고 모두 한꺼번에 넣는 것이 좋을 것이라고 생각되네요.
(1:1이면 하위노드를 만들 필요가 없는 것인가? 긁적...
한 사람이 여러 권한을 가질 수도 있는 구조이신지....?)
M 루틴 이외에 아무것도 안 쓴다면,
그리고 클래스 구조로 되어 있는 것이 아니라면,
두 번째 방법대로 하시는 것이 좋겠죠.
-- 김종현 님이 쓰신 글:
>> User Global
>> Global 구조 :
>> ^User(ID,Key)="Name,Address,Telephone,EMail"
>> -----------------------------------------------------------
>>
>> UserLevel Global
>> Global 구조 :
>> ^UserLevel(Key)="Level,Memo"
>> -----------------------------------------------------------
>>
>> RDBMS의 PK,FK의 형태로 SubScript를 만드는 것과
>>
>>
>>
>> User Global
>> Global 구조 :
>> ^User(ID)="Name,Address,Telephone,EMail"
>> ^User(ID,Level)="Memo"
>> -----------------------------------------------------------
>>
>> UserLevel Global 없이 User Global의 SubScript로 Level을 넣는것중
>>
>> 규모가 어느정도 커저서 Global간의 관계성이 많아질경우 어떤것이 더
>> 효율적인지 조언을 부탁드립니다.
|