Q&A

  • 데이터베이스 로그인을 하나만 가질수 있는 방법
안녕하세요.



델파이 초보입니다.



저희가 이번 프로젝트를 델파이로 구축할려고 하는데 프로그램 크기가 좀 큼니다.



그래서 MDI타입으로 하기에는 문제가 있기에 개별적인 업무별로 하나의 프로젝트로



나누어서 개발을 할려고 합니다.



그런데 개별적으로 실행모듈을 만들경우의 문제점이 데이터베이스 로그인 문제가 있습니다.



모든 프로그램에서 데이터베이스에 접속을 하여야 하니 데이터베이스 사용자수의 기하급수적인 증가와 서버의 용량이 문제가 대두되었습니다



그래서 클라이언트에서 데이터베이스 접속은 하나만 연결을 하고 접속된 데이터베이서 연결 정보를 모든 프로그램이 공유를 할려고 하는데 가능한지 알고 싶습니다. 가능하다면 방법은 어떻게 해야 하는지요?



여러 고수분들의 조언을 부탁드립니다.



그럼, 즐겁고 활기찬 생활이 되시길 바라면서 생 초보가 글을 올립니다.

1  COMMENTS
  • Profile
    이재식 2000.02.14 23:44
    김종원 wrote:

    > 안녕하세요.

    >

    > 델파이 초보입니다.

    >

    > 저희가 이번 프로젝트를 델파이로 구축할려고 하는데 프로그램 크기가 좀 큼니다.

    >

    > 그래서 MDI타입으로 하기에는 문제가 있기에 개별적인 업무별로 하나의 프로젝트로

    >

    > 나누어서 개발을 할려고 합니다.

    >

    > 그런데 개별적으로 실행모듈을 만들경우의 문제점이 데이터베이스 로그인 문제가 있습니다.

    >

    > 모든 프로그램에서 데이터베이스에 접속을 하여야 하니 데이터베이스 사용자수의 기하급수적인 증가와 서버의 용량이 문제가 대두되었습니다

    >

    > 그래서 클라이언트에서 데이터베이스 접속은 하나만 연결을 하고 접속된 데이터베이서 연결 정보를 모든 프로그램이 공유를 할려고 하는데 가능한지 알고 싶습니다. 가능하다면 방법은 어떻게 해야 하는지요?

    >

    > 여러 고수분들의 조언을 부탁드립니다.

    >

    > 그럼, 즐겁고 활기찬 생활이 되시길 바라면서 생 초보가 글을 올립니다.



    이재식 Wrote :

    안녕하십니까?

    대기 c/s환경에서는 그런 세션문제가 대두될 수 있습니다.



    여러 클라이언트에대해서 하나의 서버 로그인 세션만을 가지려면,

    session component를 안쓰시면 됩니다.

    그리고, database 컴포넌트를 쓰셔서 database속성값을 모든 테이블 및

    쿼리 컴포넌트가 공유하시면 될 것입니다.

    즉, 모든 응용프로그램이 같은 DB Handle를 공유하면 되는 것입니다.

    이렇게해서 실제로 여러 유저에대해 하나의 세션만 나오는지 아닌지

    확인하는 방법은 dba가 알고 있을 것입니다.

    dba라면 확인하는 명령어등을 알고 있을 것입니다.



    그런데, 델파이가 session컴포넌트를 제공하는 이유에는 여러가지가 있습니다.

    그중 한가지 말씀드린다면,

    하나의 서버를 여러 유저가 동시에 접근하도록 해주고,

    동시에 같은 테이블에 있는 같은 레코드에 대해서 여러 유저들의 쿼리들을

    적절히 제어해주는 역할을 합니다.

    즉, session컴포넌트를 쓰고 속성에서 autosessionName속성을 true로

    하면 여러개의 세션이 생성되는데요,

    물론 메모리를 다소 차지하겠지만, 여러가지 충돌상황을 막을 수있다는

    장점도 있습니다.