달력

32019  이전 다음

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  

https://www.dremio.com/tuning-parquet/


Parquet 파일 하나는 1 이상의 Row group이 있고 Row group column 별로 저장 되어있다.


Row Group 크기를 크게하면 column 데이터가 연속적으로 저장이 되는 부분이 커져 연산 속도나 압축 효율이 좋아진다.


하지만 disk block 크기까지 고려한다면….


A: 커다란 Parquet file 커다란 row group
앞에서도 얘기한것 처럼 연산 속도나 압축 효율은 증가하겠지만,
하나의 Parquet 파일/Row group이 두개 disk block에 걸쳐 있을 확률이 높기 때문에 추가적인 disk I/O가 발생한다.

B: 그렇다고 작은 Parquet file 작은 Row group 한다면...
두개의 disk block 걸칠 경우는 적겠지만 Parquet columnar storage 장점이 줄어든다. (row-based 저장하는것과 비슷해질듯)

C: 가장 이상적인 방식은 1개의 Parquet file 1개의 Row group 1개의 disk block 있으면 가장 좋다. (이상적!!)



But how does the block size of the disk come into play?

"come into play"

This mitigates the number of block crossings, but reduces the efficacy of Parquet’s columnar storage format.

mitigates, efficacy




https://blog.usejournal.com/sorting-and-parquet-3a382893cde5


SELECT * FROM Customers WHERE Country=’Mexico’;

쿼리를 실행하기 위해서는 모든 데이터를 읽으면서 Country Mexico 데이터를 추출하는 작업을 해야한다.
만약 Country가 Mexico 고객이 전체 고객 1 %밖에 되지 않는다고 하더라도 전체 데이터를 읽어야 한다. OMG!!


Predicate pushdown이란 query engine에서 storage layer 조건을 적용하여 읽어들일 양을 줄이는것을 의미한다.


Parquet Row group 메타데이터를 이용하여 predicate pushdown 동작한다.

Eg: integer column 경우 min/max 값을 메타데이터에 저장한다.
string column 경우 Row group 내 distinct 값을 메타데이터에 저장한다.
(아래에도 나오지만 40,000개가 한계라고 한다. vcnc에서 관련 작업을 어떻게 해결했는지 나온다.)


근데 어떤 column 정렬해야하나요?
각자 환경에 따라 다르므로 실행되는 쿼리들을 모두 기록하여 자주 사용되는 필터(where) 어떤건지 파악
해당 column sort해서 저장하는것을 권고한다.



Predicate pushdown means that the query engine is able to push the condition right into the storage layer and thus reduce the amount of data that is read.

and thus. and then 하고 비슷하면서도 뭔가 다른것 같다.

Another idea is to keep a record of all the queries that are run into a log and then analyze the queries to understand which column is filtered on the most.
"column is filtered on the most"



https://blog.cloudera.com/blog/2017/12/faster-performance-for-selective-queries/


적절한 파티션 분리는 조회시 꽤나 유용하게 사용된다.
예로 일별로 파티션 데이터가 2년정도 쌓였는데 이때 최근 7 데이터를 조회하고 싶다면 730 파티션 중에서 7개만 조회하면 된다. 100x 효율 개이득!!

하지만 파티션이 너무 많으면 메타 데이터 관리가 부담이 될수 있으므로 적절하게 지정해야한다.

그리고 모든 것을 파티션으로 해결하는것은 불가능하므로 몇가지 유용한 분할 스키마 방식이 있다.


Parquet 파일에는 최대/최소 같은 정보가 담긴 메타 데이터가 있다.
Impala 2.9 부터는 필드의 min_value, max_value 필드를 읽어 조회시 파일 읽을 건너뛴.
Hive / Spark 파일을 경우에 Impala deprecated min, max 필드만 읽는. (현재 회사에서 사용하는건 Impala 2.11)


※ Parquet row group dictionary filter 대해 이해를 돕기 위한 친절한 그림.. 보세요!!


Parquet Row Group Skipping via Min/Max Statistics 테이블 생성시 Sort BY 했을때와 했을때의 차이를 보여줌


Parquet Row Group Skipping via Dictionary Filtering 
Impala 자동으로 dictionary filtering 적용한다.
하나의 parquet 파일  column distinct value 갯수 40,000개를 넘으면 예외

Min/Max 범위가 매우 커서 그다지 효과적이지 않을때 dictionary filtering 이용하여 해당값이 존재하는 파일인지 체크하여
읽어드릴 파일 갯수를 줄일수 있다.


앞에 설명이 되어있어서

쌩짜로 만들어진 테이블과 partition 으로 만든 테이블, partition clustering으로 만든 테이블의 비교한 표는 재미지게 볼 수 있다.



This approach significantly speeds up selective queries by further eliminating data beyond what static partitioning alone can do

This means that when the min/max skipping may not be effective due to the min/max range being too large, dictionary filtering can check for the existence of values without reading any of the rows in the file.



VCNC 기술 블로그 글을 보고 호기심이 생겨 찾아보았습니다.

http://engineering.vcnc.co.kr/2018/05/parquet-and-spark/


현재 Spark로 parquet 파일 쓰고 Hive, Impala로 조회하는 부분이 있는데 테스트 하면서 현재 상황에 맞게 수정 해봐야겠다.

Posted by 오산돌구

이번 포스트는 직독직해를 한게 아니라 내용중에 제가 필요한 부분만 적어보았습니다.
요새 고민하는게 있습니다.
무언가 배울때 생각하면서 배워야한다는점. 무조건 배우려고 하는건 아닌것같아요 : )
이게 내가 능력도 안되는데 마냥 하고싶은건가, 해야되는건가, 하면 좋은건가! 뭐 이런 생각들이요 ㅎㅎ

잘못 썼거나 추가하면 좋은 글이 있다면 알려주시면 감사하겠습니다.

Kernel Coding style

1. indentation
탭은 8글자, identation도 8글자
누군가는 8글자가 너무 오른쪽으로 치우지게 하는것 아니냐고 불평할수도 있다.
깊이 {, }가 3 이상일때 그렇게 되는데 해주고 싶은 말은, 프로그램을 고쳐라.
(depth가 3 이상인건 잘못됐다는뜻;; 난 여차하면 4이상인데.....후덜덜)

한줄에 여러 문장을 쓰지마라


또한 한번에 여러개의 변수에 할당을 하지마라

2. Breaking long lines and Strings
깊이가 깊은게 아니라 출력하려는 문장이 길경우(80칸이 넘어갈경우 )
긴 문장을 뜻이 되게 잘 나누어서 코딩한다


3. Placing Braces and Spaces
K&R에 따르면
if, switch, for, while, do의 문장의 경우 brace는 같은 줄에서 연다

그러나 함수의 경우에는 다음줄에 연다

문장이 하나만 있으면 brace 할 필요가 없다
예외) 다른조건에서 brace를 사용하면 한 문장이 있어도 brace를 사용

3.1 spaces
if, switch, case, for, while, do 다음에는 공백추가
sizeof, typeof, alignof, __attribute__같은것 뒤에는 공백 없음

(, ) 안쪽에는 공백을 넣지 않는것이 좋다. (;; 이거 내가 항상 하는건데.....)
s = sizeof( struct file )  // x  bad style

binary and ternary 연산자는 양옆에 공백
unary 연사자는 공백 없음

4. Naming
헝가리안 표기법은 쓰지마라
tmp, foo는 ......어후;; shotting offense와 같은거다. (치고빠지기 뭐 그런건가?;; 유지보수는 신경안쓰는..)

5. Typedefs
typedef가 마냥 좋은건 아니라고~!!!!


.........

14. Allocation memory
커널에서 메모리 할당하라고 제공하는 function : kmalloc(), kzalloc(), kcalloc(), vmalloc(), vzalloc()


......


16. Function return values and names
리턴값을 이용하여 함수의 성공여부를 판단하는데
두가지 방법이 있다.
err-code(-Exxx = failure, 0 = success)방법이 있고,
boolean (0 = failure, non-zero = success)방법이 있다.

두가지가 섞여서 사용하게되면 헷갈릴수가 있으므로
다음과 같은 규칙이 있다.

    함수명이 어떤 액션을 취하면  err-code방식
    소개하는 함수명이면 boolean 방식

예를들어 add_work() 의 경우 err-code, pci_dev_present()의 경우 boolean 방식을 사용한다.



출처 : http://www.kernel.org/doc/Documentation/CodingStyle


Posted by 오산돌구

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. 이젠 자식과 부모 프로세스 두개가 존재한다.

  • 자식프로세스가 임시 RDB파일에 dataset을 쓰기 시작한다.

  • 자식프로세스가 새로운 RDB파일에 쓰는것이 완료되면, 기존에 있는것과 바꾼다.

이 기능은 copy-on-write에서 얻을수있는 이점을 가져왔다.(copy-on-write라는거...처음알았다...)


Append-only file

Snapshotting은 내구성이 대단히 좋지는 않다. 만약에 당신의 컴퓨터가 Redis 중단을 실행하던가, 전원이 나갔다거나, 당신이 실수로 kill -9를 실행했을때 마지막 data는 잃어버릴것이다. 이것은 다른 어플리케이션에서는 큰 문제는 되지 않지만, Redis는 완전한 내구성에 영향을 미치고, Redis가 죽을수도 있다.


그래서 Redis가 완전한 내구성의 대안으로 나온것이 append-only file이다. 버젼 1.1부터 사용할수 있게 되었다.
당신은 설정파일에서 AOF옵션을 활성화 시킬수 있다.

appendonly yes

설정 이후부터는 매시간 Redis는 명령어를 받아 dataset이 변경될때마다(e.g. SET) AOF에 추가 될것이다.
Redis를 재시작하면, AOF을 이용하여 상태를 재구성 할것이다.


Log rewriting

당신이 추측 할수있듯이, AOF는 쓰기연산을 수행할때마다 계속 커진다. 만약 당신이 100번 카운터를 증가했다면, 끝날때는 dataset에는 single key와 최종값이 저장되어있겠지만, AOF에는 100개의 정보가 있다.
99개의 정보는 현재 상태에서는 필요하지 않는것인데도 말이다.

그래서 Redis는 재밌는 기능을 지원한다: 클라이언트에게 인터럽트 요청없이 백그라운드에서 AOF를 재조정 할수있다. 언제든지 BGREWRITEAOF 사용하게되면 Redis는 현재 메모리에 dataset를 재구성하기위해 작은 단위로 명령어를 순서대로 쓰기 시작할 것이다.
당신이 AOF를 사용한다면, 때론 BGREWRITEAOF 실행하는게 필요할것이다.


How durable is the append only file?

Redis가 disk에 있는 data와 fsync를 몇번할지 정할수 있다. 여기 옵션이 있다.
(지금 옵션보니까 appendfsync [no, everysec, always]로 되어있다.)

  • fsync every time, 새 명령어를 AOF에 추가한다. 엄청 느리지만, 매우 안전하다.

  • fsync every second, 충분히 빠르다. 자연재해가 발생한다면 당신은 1초의 data를 잃어버릴수도있다.

  • Never fsync, data를 저장하는것은 OS에 맡기는것이다. 빠르지만 안전하지 않은 방법이다.

추천하는(그리고 default로 설정되어있는)건 fsync every second로 설정하는것이다. 매우 빠르면서 매우 안전하다always설정은(위에보면 every time인것같다.) 매우 느리다(Redis 2.0에서 성능향상이 있었지만 아직도 느리다) 더 빠르게 하는 방법은 없다.


AOF파일이 충돌나면 어떻게 해야될까요?

서버가 AOF파일에 쓰는도중 충돌 나는건 충분히 가능한 얘기이다.충돌난 파일은 Redis에서 더 이상 사용하지않는다. 충돌이 났을경우 당신은 아래와 같은 방법으로 문제를 해결할 수 있다.

  • AOF파일의 백업 파일을 생성한다.

  • Fix the original file using the redis-check-aof tool을 사용하여 원본 파일을 고친다

    • $ redis-check-aof --fix <filename>
  • Optionally use diff -u 명령을 사용하여 백업파일과 원본 파일의 차이를 점검한다.

  • 수정된 원본 파일로 Redis를 시작한다.


How it works

이미 snapshotting에서 사용했던것처럼 로그 다시쓰기도 copy-on-write방법을 사용한다.
다음과 같이 진행한다.

  • Redis forks, 자식노드와 부모노드가 존재한다.

  • 자식노드는 임시 AOF파일에 쓰기 시작한다.

  • 부모노드는 메모리 버퍼에 새로 변경된 내용들을 모두 계산한다. (동시에 파일에 쓰게되면 다시쓰기는 실패하게 된다. 안전한 장치인것이다.)

  • 자식 노드가 쓰기 작업이 완료가 되면, 부모노드는 신호를 받고, 자식노드로부터 생성한 파일의 끝에 메모리 버퍼에 있는 내용을 이어 쓴다.

  • Redis는 자동으로 이전파일명을 새로운 파일명으로 변경하고, 새로운 파일에 새로운 데이타를 쓰기 시작한다.


AOF를 어떻게 바꾸나요? dump.rdb snapshots을 이용하면 되나요?

Redis2.0과 Redis2.2가 절차가 다릅니다. Redis2.2가 간단하고, 재시작할 필요가 없습니다.

Redis 2.2

  • 마지막 dump.rdb파일의 백업 파일을 만든다.
  • 백업파일을 안전한 곳으로 전송한다.
  • 아래 두 명령어를 실행한다.
  • redis-cli config set appendonly yes
  • redis-cli config set save ""
  • 당신의 database는 같은 key에 대해 같은 value를 가지는지 확인한다.
  • AOF에 올바르게 쓰기작업을 실행하는지 확인한다.

첫번째 CONFIG 명령은 AOF 기능을 활성화 한다. Redis는 초기 dump파일을 생성하기위해서 차단될 것이다.
그리고 기록할  파일을 열고, 다음 쿼리부터 이어쓸것이다.
두번째 CONFIG 명령은 snapshotting persistence을 끌때 사용한다. 이것은 선택사항이다.

IMPORTANT: redis.conf를 수정할때는 AOF기능을 키고 수정해야한다. 그렇지 않고 서버를 재시작하면 변경된 설정은 잃어버릴수도 있다. 그리고 변경전 설정파일로 서버는 시작할것이다.

Redis 2.0

  • 마지막 dump.rdb파일의 백업 파일을 만든다.
  • 백업파일을 안전한 곳으로 전송한다.
  • database가 쓰는작업을 모두 멈춘다.
  • redis-cli가 bgrewriteaof 수행하면, AOF파일을 만들것이다.
  • Redis가 AOF dump 생성이 끝나면 서버는 멈춘다.
  • redis.conf 수정을 마치면 AOF 기능이 활성화된다.
  • 서버를 재시작한다.
  • 당신의 database는 같은 key에 대해 같은 value를 가지는지 확인해보자
  • AOF에 올바르게 쓰기작업을 실행하는지 확인해보자.


원문 링크 : Persistence


Posted by 오산돌구

Redis의 소스코드는 매우 크지 않다. (2.2 release에서는 2만라인밖에 안됩니다.)
그리고 우리는 최대한 단순하고 쉽게 이해하도록 하기 위해 엄청 노력했다.

하지만 우리는 Redis의 내부 동작을 설명하는 몇개의 문서가 있다.


Redis의 동적 문자열

문자열은 Redis의 기본적인 블럭 단위이다.

Redis는 key-value 저장소이다. Redis의 모든 key는 문자열이며 value 또한 단순한 문자열 이다.

List, Set, 정렬 Set, Hash이나 더 복잡한 value도 문자열로 구성 되어있다.

Hacking Strings 페이지는 Redis의 문자열의 세부적인 구현을 어떻게 했는지 설명했다.


Redis Virtual Memory

가상메모리 구현에 대해 자세히 설명한 문서가 있다.

경고 : 위 문서는 2.0 버젼의 구현을 설명했다. 현재 2.2에는 다르고...더 좋아졌다


Redis Event Library

event library가 어떻게 동작하고 왜 필요한지 알기 위해선  event library 를 읽으십시오.

Redis event library 문서에는 Redis가 사용하는 event library가 어떻게 구현되었는지 기술되어있다.


원문 링크 : Internals

Posted by 오산돌구
TAG redis
1. 영어 공부중임을 잊지 말라_ 늘 본인이 영어 공부 중이라는 사실을 명심하자.

2. 연습만이 살 길이다_ 영어 공부에 왕도는 없다. 연습 하는 과정에서 자연스럽게 습득하는 것이다. 연습량과 실력은 비례한다.

3. 실수를 두려워하지 말라_ 실수로부터 배우는 것이 많다. 실수가 두려워 말을 안 하는 것보다 실수를 통해 부족한 부분을 보완해 가는 것이 좋다.

4. 영어로 생각하라_ 늘 머릿속에서 영어로 문장을 말하는 연습을 하라. 또한 영어 단어를 떠올리는것도 잊어선 안 된다.

5. 처음부터 욕심내지 말라_ 간단한 표현을 놔두고 어려운 영어 표현을 쓰면 부담만 커진다.

6. 독서하라_ 항상 영어 책을 곁에 두고 읽으면서 문장과 가까워져라.

7. 문맥을 잡아라_ 처음부터 끝까지 모든 것을 이해하려고 집착하기 보다는 앞뒤 문맥을 통해 의미를 이해하는 연습을 하라.

8. 규칙을 잊어라_ 언어란 결국 의사소통이다. 문법에 얽매이기 보다는 자연스럽게 익히는 것이 좋다.

9. 영영사전을 펼쳐라_ 영영사전은 영어표현의 보고다. 단어의 뜻뿐만 아니라 파생 단어도 함께 익힐 수 있기에 초급자들에게 특히 주효하다. 다양한 예문을 살피는 것이 좋다.

10. 상상하라_ 생활 속에서 특정상황이나 주제에 관해 자신의 생각을 영어로 표현하도록 연습한다. 혼자서 원어민 발음을 따라하거나 거울을 보면서 연습하는 것도 좋다.

출처  :  http://news.nate.com/view/20091105n01853

Posted by 오산돌구
제가 영어를 공부하고자 시작하였습니다. 
종종 오역이 있을 수 있습니다. 꾸준히 노력해서 줄여야겠지요...
시간이 지나 양질의 번역글을 많이 썼으면 좋겠네요 : )
잘못된 부분은 지적해주시면 인신공격빼고는 모두 달게 받겠습니다 : )


여러분이 얻으려고한 정보를 찾지 못했을때 구글의 Advanced Search기능을 사용해보세요
'고급 검색'이라고 두려워 할것없어요 사용하기 매우 쉽습니다. 기본 검색보다 더 정확한 검색을 하기위해서는 기능을 선택하거나 제외해야합니다.
구글 검색창오른쪽에 있는 Advanced Search를 클릭하세요

Date, usage rights, numeric range, and more,”이거나 +표시를 클릭하면 더 많은 선택창이 보여집니다.
그리고 맨 마지막에는 다양한 컴퓨터 OS나 대학같은 특별한 검색을 포함한 구글의  topic-specific searches가 링크되어 있습니다.


위에는 회색글씨로 “Use the form below and your advanced search will appear here,” 라는 문구가 있는데 여기에 Advanced Search를통해 만들어낸 쿼리문을 보여줍니다.

Note: 이 기능은 오래된 브라우저나
          여러분이 자바스크립트 사용안하는 고급보안기능 설정했다면 작동안할수있습니다.

고급검색기능기존 검색 예시기존 검색 결과창
 모든 단어 포함 tap dance ] 변화없음
 문구 정확하게 포함 tap dance ] 단어 양쪽에 따옴표를 붙인다
여러단어중 적어도 하나포함 tap OR ballet ] 단어 사이에 OR을 붙인다.
단어 제외 tap dance ] [ tap dance ] 단어 앞에 - 기호 붙인다


이제부터는 앞에서 말했던“Date, usage rights, numeric range, and more” 에 대해서 설명하겠습니다.


1. 출력 결과 갯수 정하기

한번에 10개 이상의 출력결과물을 보고싶다면, Results per page 박스에서 선택해주면 됩니다. 결과물이 로딩될때 인터넷연결이 느릴경우에만 차이를 느낄수 있습니다. 50개의 결과를 보기 위해서는

(검사후에는 URL에 &num=50이라는 글씨가 포함되어있는것 빼고는 어떤 영향도 끼치지 않습니다.)


2. 언어

언어상자에는 페이지에 출력되는 결과물의 언어를 제한 할수있습니다. 예를들면 스페인의 에스파냐에있는 호텔을 추천받고싶을때는 다음과 같이 하면 됩니다.


(이것도 역시 검사후에는 URL에 &lr=lang_es가 포함됩니다. 언어를 변경했다고 상단에 보여지는 검색창의 언어가 변하지 않습니다)


3. 파일 형식

파일 형식에서는 특정 파일 형식을 지정하거나 제외시킬수 있습니다. 

File FormatSuffixDescription
Adobe Acrobat PDF .pdf A publishing format commonly used for product manuals and documents of all sorts.
Adobe PostScript .ps A printing format often used for academic papers.
Microsoft Word .doc A common word processing format.
Microsoft Excel .xls A format for spreadsheets.
Microsoft Powerpoint .ppt A format for presentations and slides.
Rich Text Format .rtf A format used to exchange documents between Microsoft Word and other formats.

자산괸리가 쓰여진 질좋은 PDF 문서를 찾는다고 하면 다음과 같이 하면 됩니다.


4. 도메인
특정 웹사이트나 도메인의 글을 검색하거나 제외시킬때 사용한다. 아래 그림은 스탠포드대학 사이트에서 구글창설자 Larry Page 와 Sergey Brin에 대해서 찾으려고 하는것입니다.

다음은 봉사단체의 정보를 얻기위해 도메인이 ".org"이고 "volunteering"검색어를 검색하는 그림입니다.
5. 날짜
크롤러나, 인덱스가 3달, 6달, 12달 업데이트가된 페이지가 나오게 할수도 있습니다. 
유명한 페이지는 자주 크롤링되고, 인덱싱이 된다. 글자 교정하는것도 페이지 변경된것으로 여깁니다.

최근 미국 여성의 40%가 폐경기로부터 낫기위해 호르몬 치료를 사용하는데 장점과 단점에대해서 과학자들이 쓴
최신 글을 찾고 싶을때 아래 그림과 같이 합니다.

날짜를 선택해도 “your advanced search will appear here”박스에는 아무런 변화가 없습니다. 하지만 3달을 선택하고 검색을 하면 url에 &as_qdr=m3;가 포함되서 보여지게 됩니다.
일년 또는  한달전의 사이트의 모습이나 현재 접근이 안되는 사이트를 보고싶을때는 Wayback Machine 을 방문하세요(이거 좀 괜찮네요 98년도 naverㅋㅋㅋ)

6. 사용자 권한

Usage RightsDescription
not filtered by license standard, unfiltered Google results
free to use or share results you can copy or redistribute
free to use or share, even commercially results you can copy or redistribute for profit
free to use share or modify results you can copy or adapt, as well as redistribute
free to use, share or modify, even commercially results you can copy or adapt, as well as redistribute, for profit
야채 조리법을 찾으려고 한다면, 우리는 구글에서 "“free to use, share or modify, even commercially”권한으로 페이지를 찾을수 있습니다.

권한조정을 한다고 맨위에있는 박스에 있는것에는 변하는것이 없습다. 하지만 URL이 복잡하게 변하게된다.

궁금하다면 다양하게 설정하면서 URL을 체크해보세요

7 .......뭔소리지........ㅠㅠ

8 지역

특정 나라나 어느지역의 페이지를 요청하는 방법입니다. 결과는 그 나라에 해당하는 URL이 보이거나, 대부분 끝에 ".com"으로 끝나는 도메인이 있습니다.

South Africa의 president clinton or senator clinton에 대해서 찾으려고 한다면 다음과 같습니다.

지역을 선택했다고 위에있는 박스에는 변화가 없습니다. 하지만 결과가 나오면 URL에 &cr=countryZA;가 나오는데

여기서 ZA는 South Africa코드 및 인터넷 도메인 입니다.

9. 숫자 범위

이것은 특정 숫자 범위가 있는 페이지를 찾고자 할때 사용합니다. 

쌍둥이에에게 50에서 1000달러 사이의 오토바이를(;;;;;문화를 모르니...허허)사준다고 할때 다음과 같이 검색합니다.

10. 안전검색

포르노사이트같은 유해사이트, 결과물이 삭제된것을 여과해주는것을 말합니다. 구글이 자동으로 공격적이 사이트를 막아줄수 없다는것은 알아야합니다. (뭥미...;;) 예를들어 유방암에 대해서 안전검색을 끈상태로 검색을 하게되면, 원치도 않는 자극적인 가슴 사진이 있는 사이트가 나타날수도 있습니다.

11. 특정 페이지 검색

 고급검색창에서 특정페이지 검색은 웹의 URL로 특정페이지의 페이지를 찾는것과 비슷합니다.
Consumer Report의 페이지와 비슷한 페이지를 찾기 위해서 처음 특정페이지 검색창(Find pages similar to the page)을 채워 놓고, Search버튼을 클릭합니다.


다른 고급 검색과는 다르게 특정 페이지 검색은 질의문이 조합되지 않는다.  그래서 Search버튼이 따로 있는것이다.

쉽게 특정 페이지 검색을 실행하려면 구글툴바를 설치하면 된다.

Advanced Search 형식대신에 검색창에 주소를 입력함으로써 링크뿐만 아니라 다음과 같은 결과를 얻어낼수있다.

  • Google’s cache of the site
  • Web pages that are similar to the site
  • Web pages that link to the site
  • All Web pages from the site that Google has crawled, listed in PageRank order
  • Web pages that contain the URL

예를 들어  훌륭한 레퍼런스 사이트 www.refdesk.com에 대해서 찾고자 할때 검색창에 www.refdesk.com을 입력하면 된다.




고급검색, advanced search 이런거 . . .통일해야하는데 다음부터는 그대로 영어로 써야겠다....
아놔.....오늘도 좌절을 해본다.....: ) 근데 재밌다.

원문 :
http://www.googleguide.com/sharpening-queries.html

Posted by 오산돌구
제가 영어를 공부하고자 시작하였습니다.
종종 오역이 있을 수 있습니다. 꾸준히 노력해서 줄여야겠지요...
시간이 지나 양질의 번역글을 많이 썼으면 좋겠네요 : )
잘못된 부분은 지적해주시면 인신공격빼고는 모두 달게 받겠습니다 : )

이 페이지는 구글이 어떻게 어떻게 색인을 만들고 쿼리를 가공하여 문서를 보여주는것이 어떻게 하는지 궁금하지 않는 독자는 넘어가도 된다.

구글은 수천개의 저렴한 컴퓨터를 분산시켜서 일을합니다. 그래서 빠르게 병렬처리를 할수있는것이죠 : )
병렬 처리는 많은 계산들을 동시에 수행하는것을 말하고, 데이터 처리속도를 크게 높일수있습니다.
구글만의 세가지 기술은 다음과 같습니다.
  • 구글봇 - 웹 크롤러는 웹페이지를 찾고 내용을 가져옵니다.
  • 색인기 - 모든 페이지의 단어를 정렬하고, 색인된 단어를 커다란 데이타베이스에 저장을 합니다.
  • 쿼리 처리기 - 사용자가 입력한 쿼리와 색인를 비교해서 가장 관련있는 문서들을 추천해줍니다.

각각의 기술들을 좀더 자세히 알아보겠습니다.

1. 구글봇, 구글의 웹 크롤러
구글봇은 웹페이지를 받기위해 웹서버에게 요청을하고, 모든 페이지를 다운로드한뒤 색인기에게 전달하는 역할을 합니다.

수많은 컴퓨터의 구글봇이 웹페이지를 받기 위해 요청을하고 사용자가 웹브라우저로 볼 수있는 속도보다 더 빨리 페이지를 가져옵니다. 사실 수천개의 다른페이지를 동시에 요청할 수있지만 웹서버의 과부하를 막기위해 구글봇의 능력보다 천천히 웹서버에 요청을 합니다.

구글봇이 페이지를 찾는방법은 두가지가 있습니다. www.google.com/addurl.html에서 URL을 추가하거나 크롤링을 통해 링크를찾는것입니다.

그런데 스패머가 부당한 방법을통해 자동으로 URL을 등록하는 로봇을 만들경우가 있습니다.
그래서 아래와 같이 불규칙한 글씨를 보여줘서 확인을 하고있습니다.


그리고 페이지를 가져올때 구글봇이 페이지를 가져올때 페이지에 있는 링크도 가져옵니다.

가져온 링크 데이타는 순서대로 큐에 추가됩니다. 모든페이지의 링크를 가져올때 구글봇은 광범위한 웹을 도달할수있는 링크 목록을 만듭니다. 이것을 deep crawling이라 합니다.(이해 못했음) 

구글봇이 동시에 천개의 페이지에 요청을 하면 'visit soon'큐에 있는 URL과 계속 관찰하고 있고 이미 만들어진 구글의 색인과 비교를 한다. 구글봇이 같은 페이지를 또 가져오는것을 방지하기위해 큐데이터에서 중복된것은 제거한다. 또한 구글봇은 페이지를 어느정도 간격으로 방문할지 결정한다. 이것은 변하지 않은 페이지를 다시 색인함으로써 자원을 낭비한다고 생각할수 있지만, 다른 한편으로는 구글이 최신의 결과를 보여주는것을 원하는 것입니다.

현재 색인데이타를 유지하기 위해 자주 변하는 웹페이지를 지속적으로 크롤을 합니다.

매일나오는 신문페이지나, 주식 시세 페이지는 다운을 받으면 됩니다. (기존의 색인데이타는 유지하면서 새로운것만 추가한다는말같음) 이것을 fresh crawls라고 합니다.

이 두개의 크롤링 방법으로 구글은 효과적으로 자원을 사용하고 합리적으로 색인데이타를 관리 합니다.


2. 구글 색인기
구글봇이 페이지 전체 텍스트를 구글 색인기에게 보내면 받은 데이터로 색인작업및 저장하는 역할을 합니다.
성능을 높이기 위해 Stop words라고불리는 단어를 무시하게 했습니다.
is, on, or, of, how, why, 한자리숫자, 한자리 등을 말합니다. 마침표, 쉼표, 여러개의 띄어쓰기도 무시합니다.
마지막으로 성능을 높이기위해 모든 문자는 소문자로 바꿉니다.


3. 구글 쿼리 처리기

여러 부분으로 구성되었는데 첫번째로 페이지랭크라는 구글의 웹페이지의 점수를 매기는 기술이 있습니다.

그리고 성능향상을 위해 자동으로 저장된 데이터 간의 관계를 학습하는 기술도 있습니다.  [ex)spelling-correcting system]

단순히 하나의 검색어와 전체 웹텍스트를 색인한것을 매칭한것을 보여주는것입니다.

사용자는 구글색인한 HTML 코드뿐아니라 페이지의 텍스트도 구글에서 제공하는 Google’s Advanced Search FormUsing Search Operators (Advanced Operators)을 이용해서 검색할 수 있습니다.



Posted by 오산돌구