<commit_before>B+Tree 명령
-----------

B+tree collection에 관한 명령은 아래와 같다.

- B+tree collection 생성: bop create
- B+tree collection 삭제: delete (기존 key-value item의 삭제 명령을 그대로 사용)

B+tree element에 관한 기본 명령은 아래와 같다.

- B+tree element 삽입/대체: bop insert/upsert
- B+tree element 변경: bop update
- B+tree element 삭제: bop delete
- B+tree element 조회: bop get
- B+tree element 개수 계산: bop count
- B+tree element 값의 증감: bop incr/decr

Arcus cache server는 다수의 b+tree들에 대한 조회 기능을 특별히 제공하며, 이들은 아래와 같다.

- 하나의 명령으로 여러 b+tree들에 대한 조회를 한번에 수행하는 기능:  bop mget
- 여러 b+tree들에서 조회 조건을 만족하는 elements를 sort merge하여 최종 결과를 얻는 기능: bop smget

Arcus cache server는 bkey 기반의 element 조회 기능 외에도 b+tree position 기반의 element 조회 기능을 제공한다.
B+tree에서 특정 element의 position이란 b+teee에서의 그 element의 위치 정보로서,
bkey들의 정렬(ASC or DESC) 기준으로 봐서 몇 번째 위치한 element인지를 나타낸다.
B+tree position은 0-based index로 표현한다.
예를 들어, b+tree에 N개의 elements가 있다면 0부터 N-1까지의 index로 나타낸다.

Arcus cache server에서 제공하는 b+tree position 관련 명령은 두 가지가 있다.

- B+tree에서 특정 element의 position을 조회하는 기능 : bop position
- B+tree에서 하나의 position 또는 position range에 해당하는 element를 조회하는 기능 : bop gbp(get by position)

B+tree position 기반의 조회가 필요한 예를 하나 들면, ranking 시스템이 있다.
Ranking 시스템에서는 특정 score를 bkey로 하여 해당 elements를 저장하고,
조회는 최고/최저 score 기준으로 몇번째 위치 또는 위치의 범위에 해당하는 element를 찾는 경우가 많다.


### bop create - B+tree Collection 생성

B+tree collection을 empty 상태로 생성한다.

```
bop create <key> <attributes> [noreply]\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<attributes\> - 설정할 item attributes. [Item Attribute 설명](/doc/arcus-item-attribute.md)을 참조 바란다.
- noreply - 명시하면, response string을 전달받지 않는다.

Response string과 그 의미는 아래와 같다.

- "CREATED" - 성공
- "EXISTS" - 동일 key string을 가진 item이 이미 존재
- “CLIENT_ERROR bad command line format” - protocol syntax 틀림
- “SERVER_ERROR out of memory” - 메모리 부족

### bop insert/update - B+Tree Element 삽입/대체

B+tree collection에 하나의 element를 추가하는 명령으로
(1) 하나의 element를 삽입하는 bop insert 명령과
(2) 현재 삽입하는 bkey를 가진 element가 없으면 현재의 element를 삽입하고
    그 bkey를 가진 element가 있으면 현재의 element로 대체시키는 bop upsert 명령이 있다.
이들 명령 수행에서 b+tree collection을 생성하면서 하나의 element를 추가할 수도 있다.

```
bop insert <key> <bkey> [<eflag>] <bytes> [create <attributes>] [noreply|pipe|getrim]\r\n<data>\r\n
bop upsert <key> <bkey> [<eflag>] <bytes> [create <attributes>] [noreply|pipe|getrim]\r\n<data>\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<bkey\> - 삽입할 element의 bkey
- \<eflag\> - 삽입할 element의 optional flag
- \<bytes\>와 \<data\> - 삽입할 element의 데이터의 길이와 데이터 그 자체 (최대 4KB)
- create \<attributes\> - b+tree collection 없을 시에 b+tree 생성 요청.
                    [Item Attribute 설명](/doc/arcus-item-attribute.md)을 참조 바란다.<commit_msg>Update mistake.<commit_after>B+Tree 명령
-----------

B+tree collection에 관한 명령은 아래와 같다.

- B+tree collection 생성: bop create
- B+tree collection 삭제: delete (기존 key-value item의 삭제 명령을 그대로 사용)

B+tree element에 관한 기본 명령은 아래와 같다.

- B+tree element 삽입/대체: bop insert/upsert
- B+tree element 변경: bop update
- B+tree element 삭제: bop delete
- B+tree element 조회: bop get
- B+tree element 개수 계산: bop count
- B+tree element 값의 증감: bop incr/decr

Arcus cache server는 다수의 b+tree들에 대한 조회 기능을 특별히 제공하며, 이들은 아래와 같다.

- 하나의 명령으로 여러 b+tree들에 대한 조회를 한번에 수행하는 기능:  bop mget
- 여러 b+tree들에서 조회 조건을 만족하는 elements를 sort merge하여 최종 결과를 얻는 기능: bop smget

Arcus cache server는 bkey 기반의 element 조회 기능 외에도 b+tree position 기반의 element 조회 기능을 제공한다.
B+tree에서 특정 element의 position이란 b+teee에서의 그 element의 위치 정보로서,
bkey들의 정렬(ASC or DESC) 기준으로 봐서 몇 번째 위치한 element인지를 나타낸다.
B+tree position은 0-based index로 표현한다.
예를 들어, b+tree에 N개의 elements가 있다면 0부터 N-1까지의 index로 나타낸다.

Arcus cache server에서 제공하는 b+tree position 관련 명령은 두 가지가 있다.

- B+tree에서 특정 element의 position을 조회하는 기능 : bop position
- B+tree에서 하나의 position 또는 position range에 해당하는 element를 조회하는 기능 : bop gbp(get by position)

B+tree position 기반의 조회가 필요한 예를 하나 들면, ranking 시스템이 있다.
Ranking 시스템에서는 특정 score를 bkey로 하여 해당 elements를 저장하고,
조회는 최고/최저 score 기준으로 몇번째 위치 또는 위치의 범위에 해당하는 element를 찾는 경우가 많다.


### bop create - B+tree Collection 생성

B+tree collection을 empty 상태로 생성한다.

```
bop create <key> <attributes> [noreply]\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<attributes\> - 설정할 item attributes. [Item Attribute 설명](/doc/arcus-item-attribute.md)을 참조 바란다.
- noreply - 명시하면, response string을 전달받지 않는다.

Response string과 그 의미는 아래와 같다.

- "CREATED" - 성공
- "EXISTS" - 동일 key string을 가진 item이 이미 존재
- “CLIENT_ERROR bad command line format” - protocol syntax 틀림
- “SERVER_ERROR out of memory” - 메모리 부족

### bop insert/upsert - B+Tree Element 삽입/대체

B+tree collection에 하나의 element를 추가하는 명령으로
(1) 하나의 element를 삽입하는 bop insert 명령과
(2) 현재 삽입하는 bkey를 가진 element가 없으면 현재의 element를 삽입하고
    그 bkey를 가진 element가 있으면 현재의 element로 대체시키는 bop upsert 명령이 있다.
이들 명령 수행에서 b+tree collection을 생성하면서 하나의 element를 추가할 수도 있다.

```
bop insert <key> <bkey> [<eflag>] <bytes> [create <attributes>] [noreply|pipe|getrim]\r\n<data>\r\n
bop upsert <key> <bkey> [<eflag>] <bytes> [create <attributes>] [noreply|pipe|getrim]\r\n<data>\r\n
* attributes: <flags> <exptime> <maxcount> [<ovflaction>] [unreadable]
```

- \<key\> - 대상 item의 key string
- \<bkey\> - 삽입할 element의 bkey
- \<eflag\> - 삽입할 element의 optional flag
- \<bytes\>와 \<data\> - 삽입할 element의 데이터의 길이와 데이터 그 자체 (최대 4KB)
- create \<attributes\> - b+tree collection 없을 시에 b+tree 생성 요청.
                    [Item Attribute 설명](/doc/arcus-item-attribute.md)을 참조 바란다.
{'fraction_non_alphanumeric': 0.1082492795389049, 'fraction_numerical': 0.002161383285302594, 'mean_word_length': 3.533061224489796, 'pattern_counts': {'":': 0, '<': 63, '<?xml version=': 0, '>': 63, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6516304', 'n_tokens_mistral': 3026, 'n_tokens_neox': 3619, 'n_words': 808}