FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[400] Re:Re: 질문) 사용자가 한 200명쯤 된다구하면???
남인정 [aplus] 2172 읽음    2002-08-19 23:05
트랜잭션을 사용한다는 것은 사용자가 언제든지 취소할 여지를 남겨놓는다는 말이 맞습니다.
그런것을 실시간 통계에 굳이 포함시켜 계속반영하는 것보다는 사용자가 자신의 데이타를 확인하고 Commit를 한 후부터 실시간 통계에 적용하는 것이 맞지 않을까요?

굳이 실시간으로 해야 한다면 매Post나 Delete마다 Commit를 하면 될 것도 같고.. 별로 문제는 안될 것 같군요



이필호 님이 쓰신 글 :
: 버저닝(versioning) 아키텍쳐가 그렇다구 한다면
:
: 사용자가 한 200명쯤되고 실시간으로 정확한 통계를 뽑아야 하는 그런 상황일때는 어떤식으로 코딩을 해야 하나요?
:
: insert야 트리거에서 해결하면 되니까 된다치고 하지만, 200명이 언제 트랜젝션을 모두 Commit() 하는지 알수 없다고 한다면 통계를 만드는것에 대한 의미가 없지 않나요?
:
: 갑자기 중국이 생각이 납니다.
: 중국은 인구조사하면서 인구가 늘어서 정확한 인구에 대한 통계를 못낸다는 우스개소리가 있는데
:
: 하여간, 어떤식의 접근이 필요한지 궁금합니다.
:
: Interbase같이 버저닝아키텍처에 대한 내용을 접해보지 못해서 전혀 감이 안잡힙니다.
:
: PS)
: 글 내용이 마치 딴지를 거는듯한 내용이긴 하지만, 절대 딴지 아니구요 순수하게 물어보는 겁니다.
: 오해하지 마시라고 글 남깁니다.
:
:
: 김백일 님이 쓰신 글 :
: : 이필호 님이 쓰신 글 :
: : : 안녕하세요 이필호입니다.
: : :
: : : 말씀하신것은 반박하려고 프로그램으로 만들었습니다.
: : :
: : : 그리고 그 프로그램을 여러개 띄워서 실행해본결과...
: : :
: : : 제가 잘 못알았군요... ㅜ.ㅜ;;
: : :
: : : 제가 본 바로는 한 프로그램이 트랜젝션을 생성해서 그 트랜젝션을 계속해서 쓰는 한은 다른 프로그램에서 그 트랜젝션에 관한 적용을 전혀 알수가 없어서 키가 충돌나는군요.
: : :
: : : 이렇게 되면 Interbase로 정확한 혹은 실시간 통계를 위해서 max(), min() 값을 믿을수 없는 결론에 이릅니다.
: : :
: : : 즉, 멀티 사용자인 경우 모든 사용자가 트렌젝션을 종료해야지만 정확한 값을 알수 있다는 이야긴데요..  정말 이상하군요..
: :
: : 인터베이스는 다른 DBMS와 아키텍쳐 자체가 다릅니다.
: : M$-SQL과 같은 락킹(locking) DB와 달리, 인터베이스는 버저닝(versioning)이라는 아키텍쳐를 사용해서 데드락 발생을 줄이는 방법을 사용합니다.
: :
: : 이 게시판에도 이와 관련해서 임프님이 쓰신 글이 있고요,
: : http://firebird.borlandforum.com/impboard/impboard.dll?action=read&db=fb_qna&no=124
: :
: : 좀 더 자세한 내용은
: : http://community.borland.com/article/0,1410,23216,00.html
: : 에 있는 "InterBase: What Sets It Apart" 라는 글을 읽어보세요.
: :
: : 이러한 버저닝 DB로서의 특징을 이해하시고, 이에 맞게 처리를 하셔야 합니다.
: : 그러므로 일단 트랜잭션을 커밋(TIBTransation::Commit 또는 TIBTransation::CommitRetaining)하신 후, min(), max()를 계산하셔야겠죠.
: :
: : 
: : : 하여간 결론적으로는 제가 팁을 정확하게 테스트 안해본 결과군요..
: : :
: : : 저는 Sybase에서 터득한 SQL이기에 Interbase에서도 적용될줄알고 쓴 글이였는데..
: : :
: : : Interbase를 믿지 못하겠군요.. 음..
: : :
: : : 나름대로 MySQL과 비교도 안되게 잘 만든 RDBMS라고 생각했었는데 실망했습니다.
: : :
: : : 지적해주신 Tk님께 감사드립니다.
: : :
: : : PS.
: : : 그리고, Sybase 소스를 MS가 사서 독자적으로 개발한것이 MS SQL이 맞습니다.
: : : 그래서 Sybase용 함수와 MS SQL용 함수가 거의 비슷하고 또한 동장방법도 거의 비슷합니다.
: : : 참고하세요
: : :
: : :
: : : Tk 님이 쓰신 글 :
: : : : sysbase에선
: : : : insert into tbl (aaa, bbb) value ( (select max(aaa) + 1 from tbl), '123')
: : : : 이처럼 고유번호를 발번하셨는데?
: : : :
: : : : 이런 경우 인터베이스로 어떻게 진행 하셨는지요?
: : : : 물론 멀티유저 환경에서요. 인터베이스는 이런 문장 적용 안됨.
: : : :
: : : : 제가 sybase를 접해보질 못해서요.
: : : : 하지만. ms-sql두 이런 문장장이 적용이 됨다.
: : : : sysbase 개발자들과 ms-sql 개발자가 일부 동일 이란 사람이라, 아니 ms서 인수 했나?
: : : :  정확한 사정은 모르지만요
: : : : ms-sql인경우 insert시 순간적인 락이 발생되서.. 이런 문장이 적용됨다.
: : : :  insert를 루프로 실행하는 동안.. select 한번 실행해보면.
: : : :  insert완료될때까지 select에 결과는 나오질 못하는 결과를 봅니다.
: : : :
: : : : interbase에선 위와는 다른 결과 입니다. 봐로 진행됩니다.
: : : : 
: : : : 그럼 interbase 사용자가 insert 할 시점에. 또다른 사용자가 insert 한다면요
: : : :  위와 같은 경우 어떻게 처리 해야되는지요?
: : : :
: : : :
: : : : 전 제네레이터 또는 트리거에 insert 하는 시점에 적용 합니다.
: : : :    트리거는 어떤 상황이든 지정한 테이블에 하나하나 입력될때 순차적으로 적용되니깐요
: : : :
: :

+ -

관련 글 리스트
391 Tip 란에 Key값에 대한 질문 Tk 2425 2002/08/13
394     Re: max(), min() 값을 믿을수 없다니..... ㅜ.ㅜ;; 이필호 2539 2002/08/18
401         Re:Re: max(), min() 값을 믿을수 없다니..... ㅜ.ㅜ;; Tk 2400 2002/08/20
395         이상한 게 아니라 당연한 겁니다. 김백일 2864 2002/08/18
398             Re: 질문) 사용자가 한 200명쯤 된다구하면??? 이필호 2481 2002/08/19
400                 Re:Re: 질문) 사용자가 한 200명쯤 된다구하면??? 남인정 2172 2002/08/19
399                 Event 메커니즘을 써보세요. 김백일 2882 2002/08/19
397             Re:InterBase: What Sets It Apart 이란 글의 허접번역글 조복기 2872 2002/08/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.