개발하면서
-
[Fastcat] FullIndex를 알아보자. (2)개발하면서/코드보면서 2011. 8. 13. 00:03
SegmentWriter에 대해 알아보는 시간이다. SegmentWriter에는 문서 텍스트 및 포스팅 정보, 렉시콘, 필터, 정렬, 그룹에 필요한 정보를 가공하는 역할을 한다. SourceReader에서 하나의 문서를 schema.xml에서 정의한 속성대로 저장한다. 한문서를 읽을 때마다 DocumentWriter, SearchWriter, FilterWriter, SortWriter, GroupWriter의 write를 실행한다. while(!requestStop && sourceReader.hasNext()){ Document doc = sourceReader.next(); int docNo = documentWriter.write(doc); if(lastDocNo != docNo) throw ne..
-
IEEE 754 single precision : binary32개발하면서/etc 2011. 8. 11. 23:01
참조 : IEEE 754 floating point Wiki IEEE 754 blog 정수를 넣으면 어떻게 비트변환이 되는지 보여줌 어떻게 변환되는지 단계별로 잘 설명한사이트 위의 자료를 통하여 IEEE 754가 어떤 규칙을 통해 부동 소수점을 표현하는지 알게 되었다. 소수부분에서 10진수를 2진수로 변환하는 걸 나는 아래와 같이 생각하고 있었다. float input; printf("input converting float Number :"); scanf("%f", &input); char binary[15+1]; int binary_idx; float fraction = 0.5f; binary_idx = 0 while (input != 0.0f && binary_idx < 15) { if (input..
-
[Fastcat] FullIndex를 알아보자. (1)개발하면서/코드보면서 2011. 8. 6. 00:40
이번에는 전체색인을 fastcat에서는 어떻게 하는지 알아보자. schema에서는 각 필드의 정보들(primary, sort, type, group등)을 schema.xml에서 읽어들이고 SourceReader는 실제 원문 파일을 읽어들이는 기능을 한다. SegmentWriter는 읽어들인 데이터를 가지고, 실제 색인작업을 수행한다. 이번 포스트에서는 Schema와 SourceReader에 대해서 알아보도록 하자. Test용으로 있는 schema.xml을 보면 맨 처음에는 collection의 이름이 나오고 그 다음에 6개의 필드 정보가 나온다. 각 필드는 name과 type은 반드시 있어야한다. (가장 기본적인 data) schema.xml을 한줄한줄 읽어가며 parsing한 data를 Schema c..
-
inter & range Command개발하면서/코드보면서 2011. 7. 21. 23:50
이번 포스트에서는 set, zset(sorted set) 자료구조에서 inter, union 어떻게 동작하는지 알아봅니다 우선 무식하게 주어진 key의 value들을 다 읽어가면서 check, check 하면서 진행할것같다...라는 생각을 가지고 소스를 보기 시작했습니다. 어? 진짜네요;;; set, zset 거의 동일합니다. set 기준 으로 설명하겠습니다. inter명령어 입니다. sinterGenericCommand( reply할 client, set 첫 포인터, set자료구조의 갯수, 결과 저장할 set) 마지막 인자는 sinterstore명령어에서 사용하겠죠? 흐름은 아래와 같습니다. (마지막이 key3이 아니라 key4;;;) set[0]을 기준으로 set[1~-setnum-1]들이 크기순으로..
-
Hadoop에서 wrong key class 에러 발생개발하면서/etc 2011. 7. 10. 09:49
job은 아래와 같고 job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); job.setMapOutputKeyClass(IntWritable.class); job.setMapOutputValueClass(Text.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); job.setJobName("sort"); job.setMapperClass(SortMaps.class); job.setCombinerClass(SortReducer.class); job.setReducerClass(Sor..
-
[Fastcat]작업 관리에 대해 알아보자.개발하면서/코드보면서 2011. 7. 2. 10:52
검색 하는 부분을 보기에 앞서, 작업들을 어떻게 관리하는지 보자. init에서는 HomePath 설정하고, 객체 가져온다. 이번 Post에서는 dbHandler, JobController, JobScheduler가 어떤식으로 구동하는지 알아보자 dbHandler는 간단하다. Connection가져오는 기능, 그리고 table 생성하는 기능 JobController는? Job을 담을 저장공간, JobQueue가 있는데 JobControllerWorker가 계속 감시한다. Job이 들어오면 즉시 jobExecutor에다가 주고, jobExecutor가 Job을 실행 한다.. 그리고 JobScheduler는 DB의 IndexingSchedule 테이블에서 활성화된 예약 작업들 (isActive==1) 을 가져..
-
C Predefined Macros개발하면서/etc 2011. 6. 19. 21:42
#include int main() { printf("FILE:%s LINE :%d\n", __FILE__, __LINE__); printf("FILE:%s LINE :%d\n", __FILE__, __LINE__); printf("DATE : %s\n", __DATE__); printf("TIME : %s\n", __TIME__); return 0; } C에서 로그를 찍을 때 보다 더 많은 정보를 남기기 위한 Macro. 소스 예제는 ANSI 표준이고 아래 URL을 가면 MS에서 정의한 Macro들이 있다. 오호~ 이걸 이용해서 log4j 같이 로그 남기는 C library를 만들면 재밌을 것 같다 : ) Microsoft Predefined Macros
-
[Redis] Persistence개발하면서/타인글보면서 2011. 4. 4. 23:32
Snapshotting Redis는 기본적으로 binary 파일, dump.rdb에 dataset의 snapshot을 저장한다.dataset에 최소 M번 변경된 경우에 매 N초마다 dataset을 저장할수 있게 Redis를 조절할 수 있다. 또는 당신이 SAVE, BGSAVE 명령어를 이용하여 수동으로 조절할수있다. key값들이 최소 1000번 변경된 경우에 60초마다 Redis가 자동으로 dataset을 disk에 백업하는 예는 다음과 같다. save 60 1000 이 전략은 아시다시피 snapshotting. 라고 한다. How it works 다음과 상황이 발생하면 Redis는 dataset을 디스크에 백업을 하게된다. Redis forks. 이젠 자식과 부모 프로세스 두개가 존재한다. 자식프로세스..