database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
ㆍLDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
LDAP Q&A 2373 게시물 읽기
No. 2373
sun directory server data sort 방법.
작성자
정진수
작성일
2007-10-22 10:27
조회수
7,140

안녕하세요?


현재 sun directory server 5.2 사용중이고 자바로 개발중입니다.


현재 구현해야 할 기능이 바로 페이징인데요 현재 구현을 한 방법은 어쩔 수 없이 자바 함수 내에서 무한 루프를 돌면서


해당되는 부분만 빈에 담아서 배열로 리턴하는 방식인데 페이징이 길어질 수록 속도가 기하 급수로 떨어지네요.


그래서 생각한게 인덱스 attribute를 생성해서 시작 index를 지정해 주고 limit를 통해 원하는 결과 값만 딱 가져오려고 


하는데 시퀀스 개념이 없다 보니 데이터를 새로 add할 때 인덱스의 최대값을 구하기가 힘드네요.



지금 별의별 방법을 다 생각하고 있는데(마지막 인덱스를 db에 저장하는 방법도 생각해 봤고 메모리에 상주시키는 방법까지...;;)


하나씩 꼭 먼가 부족하드라구요..ㅠㅠ


Integer 타입의 attribute를 검색할 때 필터에서 최대값을 구할 수 있는 방법이나 sort를 할 때 역순으로 sort를 해서 limit를 1로 하면


최대값을 구할 수 있을 거 같은데 자바 jdk1.4 api(현재 개발중인 사이트의 jdk 버전이 1.4.2입니다)의 SearchControl에는 sort와 


관련된 함수가 없는 것 같습니다.


흐.. 방법 없을까요? 현재 방법은 너무 퍼포먼스가 떨어지고 db로 구현하면 간단한데 부서별 권한 취득 때문에 ldap으로 구현해야


하는데 페이징이 계속 문제네요....


도와주세요..ㅠㅠ


이 글에 대한 댓글이 총 4건 있습니다.

페이지로 나눌 데이터(entry)가  한 ou밑에 몇개나되나요?

그거에 때라 달라질 수 있는데요.

그럼

송상준(sjsong)님이 2007-10-22 16:09에 작성한 댓글입니다.

1.  SUN DS 5.2 버전에서는 VLV 라는 기능을 제공하고 있습니다.  서버에서 페이징하여 원하는 만큼의 결과를 리턴합니다.


LDAP 관리 화면을 통해 설정하고 관리 합니다. 전체적인 LDAP 성능에 약간 영향을 줄수 있습니다.


설정 및 관리 방법은 해당 제품 문서를 찾아보세요.



2.  API 에서 sort 함수를 제공하고 있습니다. 게시판에서 "sort" 나 "정렬" 로 검색 해보세요..

  -- sort 는 그 결과값을 소스내에서 sorting 하는 함수이기 때문에 serchcontrol 에는 해당 함수가 없습니다. 게시판 참조하시면 예제 있습니다.



 

~~님이 2007-10-22 16:18에 작성한 댓글입니다.
이 댓글은 2007-10-22 16:21에 마지막으로 수정되었습니다. Edit

전체적인 DIT를 말씀드리면



루트 디렉토리 밑에 트리구조로 부서 id가 ou로 들어가 있구요 그 ou 밑에 사용자 정보가 cn으로 등록되어있습니다.

그러니까 한 부서(ou) 밑에 하위 부서(ou)는 대략 수 개에서 수십개 정도이고 전체 부서는 대략 5800여개 정도이며 사용자는 대략 1만여명이 등록되어 있습니다.

현재 페이징을 해야 하는 것은 이 사용자 정보인데요. 

기능상으로 보면 관리자 마다 자신이 관리할 부서의 아이디를 가지고 있습니다. 그리고 해당 관리자는 그 부서뿐만 아니라 그 하위 부서들에 속한 사용자를 모두 관리를 해야 하구요.

관리자의 권한 범위에 따라 관리 해야 할 사용자의 수가 적게는 수십명에서 많게는 수천명에 이르는데 이 리스트를 화면상으로 뿌려줘야 하다보니 페이징을 안할 수가 없어서요..

정진수(JINs)님이 2007-10-22 16:49에 작성한 댓글입니다.

음...

그러면 검색시에 base를 두고 SUBTREE 형태로 전체 사용자를 검색하겠네요.

수천이면 LDAP이 가지고 있는 기능을 이용한다고 해도 검색해서 리스트하기에는 좀

쉽지 않을 일 같네요.  수천이면 5.2의 검색 limit은 cn=Directory Manager는 무한대지만 

다른 사용자의 경우 2000이 default여서 다른 사용자의 경우 이 limit를 늘려줘야 하고요.



1. Entry의 Attrbute 으로 검색 필터에 <== >==를 사용하여 범위 검색하거나  

2. search Control의 SSS(Server Side Sort)와 VLV(Virtual List View)를 이용하여 프로그램
에서 사용하거나 그런데 이것도 서버 부하는 많이 가져가죠.

3. 꼭 디렉토리에서 이용해야하는것이 라면 미리 받을 데이터를 검색해서 파일로 저장후에 이를
   리스트로 나타내고 이 파일은 처음 검색할때만 만들어지도록 하면 어떨까요?
   검색시 Size Limit은 꼭 확인해 보세요...

저 같은경우 데이터 동기화 때문에 변경된 전체 데이터를 가지고 오는 프로그램을 했는데
그때 범위를 이용하여 하였습니다.

참고가 되셨어야 하는데 자세한것이 필요하시면 www.seojinint.co.kr로 문의해 주세요.

송상준(sjsong)님이 2007-10-22 17:13에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
2377왕초보(LDAP)
까꿍이
2007-12-18
6818
2376LDAP 설치 Error
간장
2007-12-04
6987
2374ldap add 에러 체크 부탁 [4]
조진호
2007-11-29
6714
2373sun directory server data sort 방법. [4]
정진수
2007-10-22
7140
2372이곳에 올려도 되려나 모르겠어요. gcc관련 질문인데요 [2]
윤상원
2007-09-27
7310
2371OpenLDAP 에서 SHA 암호화로 패스워드 저장방법 [1]
아르디스
2007-08-23
8467
2370SunONE Directory Server가 odbc를 지원하나요? [2]
윤여민
2007-07-27
6727
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다