2014-11-24 Hashing vs Indexing

hashing 끝판왕
 
 
해싱은 하나의 문자열을 원래의 것을 상징하는 더 짧은 길이의 값이나 키로 변환하는 것.
 
 해싱(hashing)이란 한마디로 말해서 많은 양의 데이터(data)들을 그보다는 작은 크기의 테이블(table) 대응(mapping)시켜 저장할 있도록 하는 일종의 데이터 관리 기법이다.
데이터들을 저장하거나 찾을 때 해쉬함수(hash function) 사용하여 일정한 시간 내에 데이터들을 효과적으로 찾을 수 있도록 해주는 것이 바로 해싱이다
 따라서 데이터들은 순차적으로 저장되는 것이 아니라 테이블 영역에 걸쳐서 고루 분포하게 되며, 저장된 데이터를 찾을 때에도 해쉬함수를 사용하면 곧바로 위치를 수가 있기 때문에 빠르게 데이터를 검색할 수가 있게 된다.
 
Hashing is a specific case of indexing:

Indexing is a general name for a process of partitioning intended at speeding up data look-ups. Indexing can partition the data set based on a value of a field or a combination of fields. It can also partition the data set based on a value of a function, called hash function, computed from the data in a field or a combination of fields. In this specific case, indexing is called data hashing.
 
인덱스란, 간단하게 말해 빠른 검색을 하기위해 사용하는 독립된 객체
 ex) 카카오톡 초성검색
인덱스의 종류는 B-tree, 해시(Hash) 등등 여러가지가 있지만 오늘은 해시(Hash)인덱스에 대하여 배워보도록 하겠다. 해시(Hash)인덱스는 검색하고자하는 값을 주면 해시 함수를 거쳐 찾고자하는 키 값이 포함된 버켓을 찾아낸다 
*버킷이란, 인덱스 각 키값과 레코드의 주소값등의 정보를 두는 공간이다.
 

 
 
What is indexing?
Indexing is a way of sorting a number of records on multiple fields. Creating an index on a field in a table creates another data structure which holds the field value, and pointer to the record it relates to. This index structure is then sorted, allowing Binary Searches to be performed on it.
 
What is hashing?
Hashing is the transformation of a string of characters into a usually shorter fixed-length value or key that represents the original string. Hashing is used to index and retrieve items in a database because it is faster to find the item using the shorter hashed key than to find it using the original value.
 
Hash is sort of an index: it can be used to locate a record based on a key -- but it doesn't preserve any order of records. Based on hash, one can't iterate to the succeeding or preceding element. This is however, what index does (in the context of databases.)
 
짧은 해시 키를 사용하여 항목을 찾으면 원래의 값을 이용하여 찾는 것보다 더 빠르기 때문에, 해싱은 데이터베이스 내의 항목들을 색인하고 검색하는데 사용된다. 
 
예제.
key   value
7864 Abernathy, Sara 
9802 Epperdingle, Roscoe 
1990 Moore, Wilfred 
8822 Smith, David 
 
각 문자가 26개의 경우를 갖는 예측할 수 없는 값의 길이에서 찾는 것보다, 각각이 오직 9개의 경우를 갖는 네 자리 수에서 일치하는 것을 찾는 것이 더 빠르다. 
 
해싱 알고리즘을 해시 함수라고 부른다. 해싱은 빠른 속도의 데이터 검색 외에도, 전자서명을 암호화하고 복호화하는 데에도 사용된다. 
 
가장 이상적인 해싱 함수
 키 집합의 한 레코드와 버켓 주소 집합의 한 레코드가 1:1 대응. (가급적 중복제외)
 충돌이 적어야 한다.
 
2.1. 완전 해싱 (Perfect Hashing)
- 완전 해싱은 나중에 좋은 해싱 기법으로 언급될 simple uniform 해싱을 의미한다. 서로 다른 (key)값이 해싱에 의해 주소값을 할당받을 , 주소값이 절대로 겹치지 않는 이상적인 해싱을 의미한다. 물론 이런 방식은 일대일대응 이외에는 존재하지 않는 방식으로 이상적인 것이다.
2.2. 정형 해싱 (Conventional Hashing)
- 데이타 개수를 이미 알고 있어서, 데이타들이 저장될 주소 범위를 미리 데이타 개수만큼 지정해 두는 방식을 의미한다. , 필요한 메모리의 크기는 미리 측정되고 미리 할당받아야 한다.
2.3. 동적 해싱 (Dynamic Hashing)
- 정형 해싱의 문제점은 데이타를 입력하기 이전에 데이타 개수에 대한 정보가 있어서 메모리를 미리 할당받아야 한다는 점이다. 일반적으로 시간이 지남에 따라서 데이터의 양의 증가하게 되므로 잘못된 측정으로 데이터가 메모리의 범위를 넘게 되면, 메모리 크기를 잡고 다시 해싱을 해야 하는 시간적, 자원적 낭비가 일어나게 된다. 동적 해싱은 이러한 데이터의 증감에 적응하기 위해서 나타난 것으로, 동적으로 메모리의 크기를 변화시키는 해싱 기법을 의미한다.
 
 
 


2014-10-28 <The Google File System> 정리

 
 
슬라이드 몇 장으로 할 것인가: 15장 + 1장(소개) + 2장(첫 장, 끝 장)
영어로 구성할 것인가: 영어로.
핵심 내용은 한글로 정리:
 
밑줄은 어디에 그을 것인가. 조사해야 할 개념에 밑줄.
 
1~5
Abstract
 무정지 기능(failure tolerance)과 군집성능(high aggregate performance) 제공.
 앞으로 예측 되는 어플리케이션의 부하와 기술적 환경에 중점을 두고 새로운 파일 시스템을 설계했다.
 여기서는 분산 어플리케이션을 지원하기 위해 설계된 파일 시스템 인터페이스 확장을 소개하고, 이 설계의  다양한 측면과 실제 상황과 이론상의 벤치마크결과에 대해 이야기하려고 한다.
 
1. INTRODUCTION
우선, 구성요소(component)의 오류는 당연하다고 간주한다.
기존에 비해 훨씬 증가한 파일들의 크기이다. 
대부분의 파일이 새로운 데이터에 의해 덮어쓰여지는 것이 아니라 추가확장되어간다는 점이다.
한번 작성된 파일은 단순히 읽기만 가능하며 대부분 순차적으로만 읽혀진다. 
이러한 파일접근방식이 대용량의 파일에 적용된다고 가정하면, 기능 향상과 원자성 보장(atomicity guarantee)을 위해서 중점을 두어야 할 부분은 클라이언트의 데이터 블록 캐슁 알고리즘이 아니라 파일의 확장(appending) 알고리즘이라는 것을 알수 있다.
어플리케이션과 파일 시스템 API를 같이 설계한다는 것은 유연성 측면에서 전체 시스템의 효율을 높여준다. 
느슨한 GFS의 일관성 규약(consistency model)덕분에  어플리케이션 쪽에 귀찮은 여러 제약을 부가하지 않고 대단히 단순화된 파일 시스템을 구현할수 있었다.  또한 아토믹 어펜드 (atomic append) 기능은 별도의 동조화(synchronization)를 필요로 하지 않고도 복수의 클라이언트가 동시에 하나의 파일에 추가할수 있도록 한다.
 
2. Design Overview
2.1 Assumptions
시스템에 걸리는 부하는 대량 스트리밍 읽기와 소량 랜덤 읽기, 두 종류의 읽기 동작이 주가 된다. .
 대량의 스트리밍 읽기에서는 각각의 동작(operation)이 수백 킬로바이트 혹은 1메가바이트 이상을 읽어들이게 되고, 동일한 클라이언트에 의한 연속되는 동작은 주로 그 파일의 연장영역에서 읽어오게 된다.  소량의 랜덤 읽기는 임의의 좌표에서 수 킬로바이트단위를 읽게 된다.  속도가 중요한 어플리케이션의 경우엔 대부분, 매번 앞뒤로 읽기 작업을 행하는 것 보다 여러 랜덤 읽기 작업을 모아서 정렬후 일괄적으로 읽어들이는 방식을 취한다.
부하에는 또한 파일에 데이터를 추가하는 대량의 순차적 쓰기도 포함된다.  
  • 시스템은 반드시 복수의 클라이언트가 동일한 파일에 동시에 자료를 추가하는 것을 지원하도록 명확히 정의된 언어체계를 갖추고 있어야 한다 이러한 파일들은 종종 제작자와 소비자 사이의 연결고리(queue)나 다방향 병합(many-way merging)에 사용된다.
  • 신속한 반응속도(low latency) 보다는 고부하를 견뎌낼수 있는 대역(bandwith) 유지가 더 중요하다. 실제 대상이 되는 어플리케이션은 일부 개개 요청에 대한 응답시간을 엄격히 지켜야 하는 경우를 제외하고 대부분 데이터를 대용량 고속처리하는것에 더 큰 비중을 두고 있다.
 
2.2 Interface
 GFS는  POSIX와 같은 표준 API를 보유하고 있지는 못하지만 어느정도 친숙한 파일 시스템 인터페이스를 제공한다.
GFS는 스냅샷 기능과 레코드 추가 기능을 지원한다. 
스냅샷: 복사본을 간단히 만들 수 있는 기능
레코드 추가 기능은 복수의 클라이언트가 추가하려는 각 데이터의 내용을 보장하면서 동시에 모든 클라이언트가 하나의 파일에 그 데이터들을 추가할 수 있도록 해준다.
 이런 구조는 여러 곳에서 생성된 결과보고서를 다방향 병합하는 경우나, 복수의 클라이언트가 파일을 잠그지 않고 (lock) 동시에 데이터를 추가해야 하는 생산자-소비자 연결에 사용될 수 있다. 
 
2.3 Architecture

파일들은 고정된 크기의 조각(chunk)들로 나뉘어 저장된다.  각각의 조각은 서버 전체를 걸쳐 고유의 64비트 조각 번호 (chunk handle)을 마스터로부터 생성시 부여받게 되고 이 번호는 절대로 변경될 수 없다. 
마스터는 모든 파일 시스템의 메타데이터를 관리한다.  여기에는 네임스페이스, 접근 조절 정보, 파일 조각 매핑과 각 조각의 현재 위치등이 포함되며, 마스터는 또한 조각 임대(lease) 관리, 연결이 유실된 조각(orphaned chunk)의 유휴메모리 정리 (garbage collection), 조각 서버들간의 조각 이동과 같은 시스템 수준 동작을 관리한다.  마스터는 주기적으로 각각의 조각서버와 맥박신호(heartbeat message)를 교환함으로써 명령을 전달하고 각 서버의 상태를 수집한다.
GFS 클라이언트 코드는 이 파일시스템 API를 적용하고 있는 각각의 어플리케이션과 링크되어 어플리케이션전반에 걸친 마스터와 조각서버간의 통신에 관여하게 된다.  클라이언트는 마스터와 통신하며 메타데이터 관련 작업을 수행하지만 실제 데이터 관련 통신은 모두 조각서버로 직접 전달된다.  이시스템은 POSIX레벨의 API를 제공하지 않기 때문에 리눅스 v노드계층을 후크할 필요가 없다.
클라이언트나 조각서버 어느쪽도 파일 데이터를 캐쉬하지 않는다.  대부분의 어플리케이션은 거대한 파일의 스트림을 읽어들이거나 캐쉬하기에 너무 큰 사이즈의 데이터를 다뤄야 하기 때문에 클라이언트의 캐쉬는 거의 유용성이 없으므로, 클라이언트에서 캐슁 기능을 제거해서 시스템 전반의 동조화에 관련된 문제점을 해결할 수 있다. (메타데이터는 클라이언트 캐쉬에 저장딘다)  각각의 조각 파일은 로컬 파일로 저장되므로 리눅스의 버퍼캐쉬가 지속적으로 메모리에 데이터를 저장하기때문에 조각서버 역시 파일 데이터를 캐쉬에 저장할 필요가 없다.
 
2.4 Single Master
 master는 메타데이터만 클라이언트에게 제공하고 파일 제공은 하지 않는다. 이로서 병목현상을 해소한다.
가장 단순한 형태의 읽기 작업을 그림1과 함께 설명해보면, 우선 클라이언트는 지정된 조각 사이즈에 따라 어플리케이션이 배정한 파일의 이름을 분석하고 파일내의 조각 인덱스 오프셋을 계산한다. 그러고나서 마스터에게 파일이름과 조각인덱스를 포함한 요청을 전송하면 마스터는 해당 조각핸들과 복제의 위치를 반환하게되는데, 클라이언트는 이정보를 파일이름과 조각인덱스를 키로 삼아 캐쉬에 저장한다.
  클라이언트는 이후 복제중 하나 - 대부분 가장 가까운 복제 - 에 요청을 보낸다.  이 요청은 조각 핸들과 그 조각 내의 구체적인 바이트 범위를 포함하는데, 동일한 조각에 대한 읽기 작업은 캐쉬에 저장된 이 정보가 만료가 되거나 파일이 다시 열리기 (reopened) 전에는 마스터와의 통신이 필요없게 된다.
 
2.5 Chunk Size
 
비적극적인 공간배치 알고리즘 (lazy space allocation)을 사용하여 대형 사이즈의 조각을 사용함으로써 야기될수 있는 가장 큰 문제중 하나인 내부 파일 조각화에 의한 공간 낭비를 줄였다.
장점; 클라이언트가 조각 정보에 관해서 마스터와 통신해야 하는 횟수를 줄여준다. 클라이언트가 해당 조각 내에서 더 많은 작업을 수행할 수 있다. 고정된 TCP연결을 유지해야할 필요가 없어 네트웍의 부하를 줄일 수 있다. 전체 메타데이터의 크기를 작게 만들어 준다.
단점: 이 파일을 동시에 여러 클라이언트가 접근할 경우 이러한 조각을 저장하는 조각서버는 분쟁지역(hot spot)화 할 수 있다. 분쟁 지역 발생 문제는 GFS가 초기 일괄 처리 시스템 (batch-queue system)에 적용되었을때 발견되었는데,
 더 높은 복제율로 저장하도록 하고 각각의 일괄 처리 시스템들은 어플리케이션의 실행 시점을 미묘하게 다르게 갖도록 했다.  좀 더 근본적인 해결책으로는 클라이언트가 이런 분쟁지역이 발생할 경우 다른 클라이언트로부터 데이터를 읽어들이도록 하게 하는 것일 것이다.
 
2.6 Metadata
마스터에는 파일과 조각의 네임스페이스, 파일과 조각간의 매핑 정보, 그리고 각 조각의 복제들의 위치정보, 크게 이 세가지의 메타데이터가 저장된다.  
 
2.6.1 In-Memory Data Structures
최악의 경우 거대한 파일 시스템을 구성하기위해 메모리가 부족한 경우라 할지라도, 마스터에 추가로 메모리를 확장하는 것은 모든 메타데이터를 메모리에 저장함으로써 얻을 수 있는 간편함과 안정성, 속도, 가변성을 생각하면 저렴한 비용이라고 간주할 수 있을 것이다.
이러한 설계가 수백개이상의서버로구성된클러스터에서는흔하게발생할수있는 문제들 - 조각서버들이클러스터에추가되거나삭제되고,이름을바꾸거나오류발생,재기동등의문제 - 속에서도 마스터와조각서버간의동기를맞추는작업을간편하게할수있다.
 
2.6.3 Operation Log 부터 시작.
 작업 로그는 메타데이터에 대해 치명적일 수 있는 변경의 순차적 기록을 저장한다.
파일과 조각들은 버전을 포함해서 (4.5항 참조) 모두 생성된 논리적 시간대에 의해서 단일하고 영구적으로 구분된다.
작업로그는 원격 기기에 다시 복제되어 해당하는 로그 기록을 로컬과 원격 모두의 디스크에 갱신을 마친후에 클라이언트 작업에 응답하도록 한다.
마스터는 이 작업 로그를 다시 수행함으로써 파일시스템의 상태를 복구한다.  재기동 시간을 줄이기 위해서는 로그의 크기가 작도록 유지해야하는데, 마스터는 로그가 특정 크기를 넘어설때마다 기록을 해두고 (checkpoint) 복구시에는 이것을 로컬 디스크에서 읽어들여서 다시 수행해야 하는 로그 기록의 갯수를 최소화 한다.  이 기록은 메모리에 직접 저장할 수 있는 압축된 B트리 형태로 저장되어 추가적인 분석과정 없이도 네임스페이스 검색에 이용될 수 있다.
기록을 작성하는 동안에 발생한 오류는 복구코드가 자동으로 검색하여 불완전하게 종료한 기록들을 무시하기 때문에 전체 데이터의 무결성에 영향을 미치지 않는다.
 
2.7 Consistency Model
 GFS는 우리의 고도로 분산된 어플리케이션들을 완벽하게 지원하면서도 비교적 적용이 단순하고 효율적일수 있도록 그다지 엄격하지 않은 일관성 모델을 (relaxed consistency model) 갖추고 있다. 
 
2.7.1 Guarantees by GFS
 
파일 네임스페이스의 변경은 - 예를들어 파일의 생성과 같은 - 각각의 원자성을 가진다.  이것들은 마스터에의해서만 처리될수 있다: 네임스페이스의 잠금 기능이 원자성과 정확성을 보장한다
 데이터 갱신 이후의 파일 영역 상태는 그 갱신 작업의 종류와 갱신 성공 여부, 또 병렬로 진행된 또 다른 갱신작업의 유무에 따라 달라진다.  여기서 가능한 모든 경우를 테이블 1에 요약해 보았다. 
파일 영역은  일정(consistent) 상태,
정의(defined)
일정하지 않은 상태(inconsistent) 또한 이는 동시에 미정의상태(undefined)이 기도 하다.)
Stale replicas are garbage collected at the earliest opportunity.
 
5p
 
2.7.2 Implications for Applications
the relaxed consistency model
relying on appends rather than overwrites, checkpointing, and writing self-validating, self-identifying records.
it can filter them out using unique identifiers in the records, These functionalities for record I/O
 
3. SYSTEM INTERACTIONS
We designed the system to minimize the master’s involvement
in all operations.
 
3.1 Leases and Mutation Order
The master grants a chunklease to one of the replicas, which we call the primary.
the global mutation order is defined first by the lease grant order chosen by the
master, and within a lease by the serial numbers assigned
by the primary.
The lease mechanism is designed to minimize management
overhead at the master.

 
 
 
6p
 3.2 Data Flow
To avoid network bottlenecks and high-latency links (e.g.,
inter-switch links are often both) as much as possible, each
machine forwards the data to the “closest” machine in the
networkto pology that has not received it.
Finally, we minimize latency by pipelining the data transfer
over TCP connections.
Once a chunkserver receives some
data, it starts forwarding immediately. Pipelining is especially
helpful to us because we use a switched networkwit h
full-duplex links.
3.3 Atomic Record Appends
This is similar to writing
to a file opened in O APPEND mode in Unix without the
race conditions when multiple writers do so concurrently.
 
7p
distributed lock manager.
with traditional writes. In our workloads, such files often
serve as multiple-producer/single-consumer queues or contain
merged results from many different clients.
The client pushes the data to all replicas of the
last chunko f the file Then, it sends its request to the primary.
The primary checks to see if appending the record
to the current chunkw ould cause the chunkto exceed the
maximum size (64 MB)
If a record append fails at any replica, the client retries the
operation.
It only guarantees that the
data is written at least once as an atomic unit.
3.4 Snapshot
The snapshot operation makes a copy of a file or a directory
tree (the “source”) almost instantaneously, while minimizing
any interruptions of ongoing mutations.
4.1 Namespace Management and Locking
Therefore,
we allow multiple operations to be active and use locks over
regions of the namespace to ensure proper serialization.
GFS does not have a per-directory data structure
GFS
logically represents its namespace as a lookup table mapping
full pathnames to metadata.
8p
Since the namespace can have many nodes, read-write lock
objects are allocated lazily.
Also, locks are acquired in a consistent total order
to prevent deadlock: they are first ordered by level in the
namespace tree and lexicographically within the same level.
4.2 Replica Placement
The chunk replica placement policy serves two purposes:
maximize data reliability and availability, and maximize network b
andwidth utilization.
4.3 Creation, Re-replication, Rebalancing
Chunk replicas are created for three reasons: chunk creation,
re-replication, and rebalancing.
chunk creation - 1) below-average disksp ace utilization. 2) limit the number of “recent” creations(
creation itself is cheap, it reliably predicts imminent heavy write traffic), 3) spread replicas of a chunkacross racks.
re-replicates - a chunkserver becomes unavailable / Finally, to minimize the impact of failures on running applications,
rebalances - moves replicas for better disks pace and load balancing.
4.4 Garbage Collection
It does so only lazily during regular garbage collection at both the file and chunk levels.
4.4.1 Mechanism
the file is just
renamed to a hidden name that includes the deletion timestamp.
파일의 이름을 삭제 시간으로 바꾸고 히든파일로 만든다. 3일뒤에 삭제.
three days
orphaned chunks - HeartBeat message
4.4.2 Discussion
the main disadvantage:
Applications that repeatedly create and delete
temporary files may not be able to reuse the storage right
away.
9p
4.5 Stale Replica Detection
the master maintains a chunk version number
to distinguish between up-to-date and stale replicas.
The master removes stale replicas in its regular garbage
collection.
5. FAULT TOLERANCE AND DIAGNOSIS
5.1 High Availability
two simple yet effective
strategies: fast recovery and replication.
5.1.3 Master Replication
The master state is replicated for reliability.
Moreover, “shadow” masters provide read-only access to
the file system even when the primary master is down.
They are shadows, not mirrors.
 
10p
5.2 Data Integrity
each chunkserver must independently verify the integrity of its own copy by maintaining
checksums.
If a block does not match the recorded checksum, the chunkserver returns an error to the requestor
and reports the mismatch to the master
In response, the requestor will read from other replicas, while the master
will clone the chunk from another replica.
If we do not verify the first and last blocks before overwriting them
partially, the new checksums may hide corruption that exists
in the regions not being overwritten.
5.3 Diagnostic Tools
diagnostic logging
6. MEASUREMENTS
연구환경
one master, two master replicas, 16 chunkservers, and
16 clients.
 
11p
6.1.1 Reads
125 MB/s when the 1 Gbps link
The aggregate read rate reaches 94 MB/s (
because as the number of readers increases,
so does the probability that multiple readers simultaneously
read from the same chunkserver)
 
12.5 MB/s per client when its 100 Mbps
network
 

6.1.2 Writes
6.2 Real World Clusters
6.2.1 Storage
6.2.2 Metadata

prefix-compressed form
12p
6.2.3 Read and Write Rates

6.2.4 Master Load
therefore is not a bottleneckfor these workloads.
6.2.5 Recovery Time
40% of the number of chunkservers)
where each clone operation is allowed to consume at most
6.25 MB/s (50 Mbps). All chunks were restored in 23.2 minutes,
6.3 Workload Breakdown
6.3.1 Methodology and Caveats
13p
6.3.4 Master Workload

14p
7. EXPERIENCES
a variety of issues, some operational and some technical.
biggest problems were diskan d Linux related.
 ex. Linux 2.2 kernels - fsync()명령어. a single reader-writer lock 문제. mmap(), pread() 명령어
 
- conclusion
the qualities essential
GFS는 다수의 저가형 상용 하드디스크를 활용해서 분산 컴퓨팅 환경 구축을 위한 필수 품질을 구현했다.
design decisions
설계상의 결정은 구글의 특수한 설정에 맞도록 했지만, 많은 부분 대규모 분산 처리 시스템에 유효하다.
reexamining traditional file system -> different points in the design space
기존의 파일 시스템에 대한 재평가와 더불어 디자인 공간에서의 다른 점들을 찾았다.
다른점 - component failures > exception , huge files, append > read 
 -> file system interface to improve the overall system.
무정지 서비스 제공 fault tolerance - monitoring + replicating data + recovery +@ checksumming.
동시 접속 상에서의 퍼포먼스 보장 high aggregate throughput
기술적 기반 - separating file system control: master, chunkservers and clients.
no bottleneck
 
결론.
GFS는 저렴한 기기들로 구성된 파일 시스템의 필수 품질을 예증했다.
 
# Summary
 
ABSTRACT
  • file system interface extensions designed to support distributed applications
분산 어플리케이션 지원을 위한 파일 시스템 인터페이스 확장
Keywords
  • Fault tolerance, scalability, data storage, clustered storage
 
1. INTRODUCTION
  • First, component failures are the norm rather than the exception.
Therefore, constant monitoring, error detection, fault tolerance, and automatic recovery must be integral to the system.
  • Second, files are huge by traditional standards.
  • Third, most files are mutated by appending new data rather than overwriting existing data.
대부분의 파일들은 새로운 데이터를 추가하는 작업이 덮어쓰는 작업보다 많다.
Design assumptions and parameters such as I/O operation and blocksizes have to be revisited.
  • Fourth, co-designing the applications and the file system API benefits the overall system by increasing our flexibility.
  • Main Purpose: over 1000 storage nodes, over 300 TB of diskst orage, and are heavily accessed by hundreds of clients on distinct machines on a continuous basis.
 
2. DESIGN OVERVIEW
 2.1 Assumptions
  • inexpensive commodity components -> fail -> monitor & recover
  • We expect a few million files, each typically 100 MB or larger in size. (optimized for Multi-GB files)
 
 
 
 
 


2014-11-03 GFS (구글파일시스템) 어휘 개념정리
 
Fault tolerance
Fault-tolerant describes a computer system or component designed so that, in the event that a component fails, a backup component or procedure can immediately take its place with no loss of service.
컴포넌트 에러가 발생하면, 그 즉시 백업 컴포넌트가 작동하거나 대체되어 손실 없는 서비스를 제공한다.
scalability
확장성 ((사용자 수의 증대에 유연하게 대응할 수 있는 정도))
data scalability 1. 자료 규모성 2. 대규모 데이터
reliability
(전산학) 시스템 신뢰도(~信賴度)
the norm
규정량
We treat component failures as the norm rather than the
exception, optimize for huge files that are mostly appended
to (perhaps concurrently) and then read (usually sequentially),
and both extend and relax the standard file system
interface to improve the overall system.
component failures
기기고장률
revisited
재고(再考)
mutate
돌연변이가 되다. 갱신하다.
A mutation is an operation that changes the contents or
metadata of a chunksu ch as a write or an append operation.
 
deployed for
구비되다. 배치되다.
checksum
중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다. 단순 체크섬과 순환중복검사 (CRC)가 있다.
IDE
통합 개발 환경
aggregate throughput
총 처리량
IDE subsystem level
 
chunkleases
 
delegates authority
 
data mutations.
데이터 갱신작업
ACKNOWLEDGMENTS
감사의 말
stale replica
 
the relaxed consistency model
Shared memory consistency models
shared memory multiprocessor system에서는 각 processor들이 변경한 데이터를
다른 processor들이 올바로(consistent하게) 접근하도록 보장해 주어야 한다.
특히나 distributed shared memory system에서는 각 메모리 노드에 대한 접근 시간이 달라지므로
이러한 작업이 무척 복잡해 질 수 있다.
따라서 이를 제공하는 정도와 방법에 따라 여러 consistency model이 존재한다.
 
먼저 확인해야 할 사항은
memory consistency는 processor가 program을 실행할 때
서로 다른 영역에 대한 메모리 접근 순서(ordering)를 제어한다는 것이다.
동일한 메모리 영역에 대한 접근은 반드시 순서대로 이루어져야 한다. (serialize)
 
물론 memory consistency를 보장하는 가장 간단한 방법은
각 processor의 메모리 접근을 순서대로 atomic하게 처리하는 것이다.
하지만 이는 (memory latency로 인해) processor의 성능에 심각한 영향을 미치게 된다.
 
strict consistency model은
어떠한 상황에서도(?) 특정 메모리 영역에 대한 read가 가장 최근에 write된 값을 읽도록 보장한다.
즉 processor1 (이하 P1)이 X에 write할 때 P2가 (동시에) Y를 write했고
P1이 Y를 read했다면 P1은 P2가 write한 값을 읽게 된다.
 
resilient
회복력 있는
producer-consumer
queue.
 
name corresponding
application
 
leases
/ chunk lease
예문.
We use leases to maintain a consistent mutation order across
replicas.
consistent
일관된
LRU buffer cache
LRU (Last Recent Used) buffer
장점
 1. 데이터 전송을 chain 방식으로 진행 , 제어 명령과 분리
 2. 가까운 머신부터 전달
 3. 수신과 송신을 동시에
network topology
네트워크 토폴로지라 하면 네트워크의 구성을 형상화 시킨 것인데요.
그냥 구성도라 생각하면 쉬울겁니다.
 TCP connections.
 
Pipelining
 
full-duplex links.
 
traditional write
 
Serializable
 
O_APPEND mode in Unix
 
synchronization,
 
AFS
Like AFS [5], we use standard copy-on-write techniques to
implement snapshots.
namespace
 A에서 정의한 함수의 이름과, B에서 정의한 함수의 이름, C에서 정의한 함수의 이름이 상당수가 동일하여 충돌이 일어나는 것이었습니다.
 
위의 문제를 해결하기 위해선 어떻게 해야 할까요? 바로 지금 배우게 될 '네임스페이스(namespace)'란 녀석으로 이름충돌을 미연에 방지할 수 있습니다. 네임스페이스를 간단히 말하면, 관련있는 녀석끼리 모여있는 공간을 말합니다. 아래의 예를 한번 보시죠.
 

 
prefix compression,
 
inode-like
 
locking scheme
 
dead lock
 
lexicographically
사전 편집 순으로.
racks.
 
network bandwidth utilization
 
clones vs replica
Sure a clone is an exact copy. A replica is a copy that looks like the original but may have hidden differences.
reclaim
재생하다. 복구하다.
After a file is deleted, GFS does not immediately reclaim
the available physical storage
handshakes with chunkservers
 
 
HDFS 
 Hadoop File System은 대용량 데이터를 저장하기 위한 분산 파일시템이다. 거대한 데이터를 여러 컴퓨터에 나누어 저장하는 파일시스템 레이어를 제공하여 데이터의 양이나 시스템의 연산 능력에 선형확장성을 부여한다. HDFS는 구글이 2003년에 발표한 Google File System (GFS)을 클론한 것이다.
 MapReduce는 큰 태스크를 분산시스템에서 효과적으로 처리하기 위한 기술이다. 비교적 간단한 연산을 구현하면 수 많은 컴퓨터를 이용하여 일을 분산 처리할 수 있도록 해준다. 2004년에 구글이 같은 이름으로 낸 논문이 있으며 하둡의 MapReduce는 구글의 MapReduce를 클론한 것이다.
HBase는 HDFS상에서 구현된 NoSQL이다. 여러 업체에서 제한된 용도로 사용된다. (비트윈에서는 메인 데이터베이스로 사용한다) HBase 또한 구글의 2006년에 발표한 BigTable을 클론한것이다.
NoSQL
즉 데이터의 패러다임이 한정된 규모의 복잡성이 높은 데이터에서 단순한 대량의 데이터로 넘어가기 시작했다. 이는 기존의 데이터 저장 시스템으로는 커버할 수 없는 여러 가지 한계를 야기했고 결국에는 새로운 형태의 데이터 저장 기술을 요구하게 되었다.
NoSQL은 Not Only SQL의 약자로 기존 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미한다. 제품에 따라 각기 그 특성이 매우 달라서 NoSQL을 하나의 제품군으로 정의할 수는 없다.
NoSQL 공통 특징
  • NoSQL은 RDBMS와는 달리 데이터 간의 관계를 정의하지 않는다(Foreign Key , Join 등)
  • RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다. (페타바이트급)
  • 고정되지 않은 테이블 스키마.  테이블의 스키마가 유동적이다.(ID 필드는 공통이지만, 데이터를 저장하는 컬럼은 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.)

CAP 이론
NoSQL은 분산형 구조를 띠고 있기 때문에 분산 시스템의 특징을 그대로 반영하는데, 그 특성 중의 하나가 CAP 이론이다.  Consistency, Availability, Partitioning 세 가지 특징을 가지고 있으며, 이중 두 가지만 만족할 수 있다는 이론이다. 

- Consistency는 분산된 노드 중 어느 노드로 접근하더라도 데이터 값이 같아야 한다는 기능적 특징이다(데이터 복제 중에 Query가 되면, Consistency를 제공하지 않는 시스템의 경우 다른 데이터 값이 Query 될 수 있다).
- Availability는 클러스터링된 노드 중 하나 이상의 노드가 FAIL이 되더라도, 정상적으로 요청을 처리할 수 있는 기능을 제공하는 특징이다.
- Partition Tolerance는 클러스터링 노드 간에 통신하는 네트워크가 장애를 겪더라도 정상적으로 서비스를 수행할 수 있는 기능이다.
# NoSQL분류
 Key/Value Store
 Ordered Key/Value Store - 데이터가 내부적으로 Key 순서로 Sorting
 Document Key/Value Store - XML, JSON, YAML과 같이 구조화된 데이터 타입으로, 복잡한 계층 구조를 표현할 수 있다. 
# 제품별 선호도
MongoDB가 제일 높고, Cassandra나 HBase가 그 뒤를 따른다.
# 기존 RDBMS와 차이
 NoSQL은 데이터를 저장한다. 그리고 Key에 대한 Put/Get만 지원한다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
Sorting, Grouping, Join, Range Query, Index 기능이 없다. 이를 구현하는  ‘NoSQL 데이터 모델링 패턴’ 이 있다.
DB Sharding / 샤딩
샤딩은 데이터베이스가 저장하고 있는 테이블을 테이블 단위로 분리하는 방법과 테이블 자체를 분할하는 방법으로 나누어진다.

 
Colossus는 GFS의 단점을 보완하고자 만든 새로운 버전의 GFS이다.
 Colossus는 2009년 Jeff Dean의 프리젠테이션에서 처음으로 잠깐 언급되었고, 2010년 Faculty Summit에서 발표된 Andrew Fikes의 프리젠테이션에 특성에 대해 간단히 소개 된적이 있었다. GFS와 다른 가장 큰 특징은 메타데이터를 샤딩하여 여러 컴퓨터에 나누어 분산 저장할 수 있게 되었다는 것인데, 이는 매우 큰 규모로의 확장을 가능하게 해주며, 좀 더 작은 파일을 사용할 수 있게 하여 어플리케이션 작성을 좀 더 단순하게 할 수 있도록 해준다.
2012년에 발표된 구글의 새로운 분산 데이터베이스이다.  Spanner는 Colossus상에서 구현된 데이터베이스인데, 지리적으로 멀리 떨어진 여러 데이터센터간 운영이 가능하다. 여러 데이터센터간 운영되는 분산 환경에서, 높은 수준의 트랜잭션 뿐만 아니라 Semi-Relational 모델과 일종의 테이블 구조SQL을 확장한 질의 언어까지도 제공한다. 
High Availability
 
no matter how
어떻게 하든.
hiccup
 
cross-server redundancy
 
loosely coupled system
 
the canonical name
A canonical name is the properly denoted host name of a computer or network server
server mirroring
Utilizing a backup server that duplicates all the processes and transactions of the primary server. If, for any reason, the primary server fails, the backup server can immediately take its place without any down -time.
Server mirroring is an expensive but effective strategy for achieving fault tolerance
shadow copy
In some Windows operating systems, when a system restore point is requested, a shadow copy of a file or folder is created. The shadow copy is essentially a previous version of the file or folder at a specific point.
데이터 완전성 ((입력된 데이터가 변경·파괴되지 않은 상태))
HTML5
 
Web vs internet
internet이 더 큰 개념. (ftp, e-mail, 등등이 속한다)
인터넷은 컴퓨터가 서로 연결되어 통신을 주고받는, 컴퓨터끼리의 네트워크를 일컫는 말이고, 웹은 그 인터넷상에 정보가 얽혀있는 무형의 정보 네트워크를 말합니다. 
divergent replicas
파편화된 복제 데이터들. (파편화 현상)
the semantics
 
propagate
전파하다
computation
계산
incrementally
증가하여
business as usual
평상시와 다를 바 없이 행동해라
transient
일시적인, 순간적인
RPC requests and
replies.
 
10% hitrate
 
saturated
포화된
culprit
원인, 용의자, 범인
pipelining scheme
 
illegible
판독이 어려운
pipelining scheme
 

 
pipelining the data transfer

 
intervention
간섭
respectively.
각자, 제각기
prefix-compressed form
 
copy-on-write.

 
hobbled
다리를 절뚝거리다. 버벅이다.
fetched
To load an instruction or piece of data from memory into a CPU's register. All instructions must be fetched before they can be executed.
binary searches
 
leeway
여지
Methodology
방법론
Caveats
통고, 경고
heuristically
 
parallelism
 
Explicit
분명한
cumbersome
크고 무거운, 번잡한
conversely
역으로
outpace
앞지르다.
Breakdown vs failure vs exception
 
conceived
상상하다
rudimentary
가장 기본적인, 흔적의
range of IDE protocol versions
 
kernel
 
redundancy check
(컴퓨터) 중복 검사 ((여분의 비트를 부가하여 잘못을 검출하기))
Json
 간단한 데이터를 xml보다 좀 더 간단하게 표현하기 위해 만든 것이다. XML보다 기능이 적기 때문에 파싱도 빠르고 간단하기 때문에 클라이언트 사이드에서, 특히 모 바일에서 더욱 유용하겠다. 사실 서버 입장에서도 더 유용하기 때문에 많은 서비스들이 XML보다는 JSON을 권장한다.
 JSON 그자체 는 단순히 데이터 포맷일 뿐이다. 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다.
 AJAX와는 별개의 개념이지만 AJAX가 없다면 JSON이라는 개념은 필요 없을 것이다. AJAX를 사용해 데이터를 주고 받을 때 그 데이터 포맷으로 JSON을 사용하는 것이다.
HTML5
4.5 Text-level semantics
리눅스 명령어 fsync
버퍼 내용을 디스크로 쓰기
리눅스 명령어 mmap()
메모리 매핑 명렁어
mmap() 호출은 파일기술자 fd가 가리키는 객체를 파일에서 offset 바이트 지점을 기준으로 len 바이트만큼 메모리에 맵핑하도록 커널에 요청한다.
리눅스 명령어 pread()
pread() 는 파일 기술자 fd 의 변위 offset (파일의 시작에서) 에서 count 바이트를 buf로 시작하는 버퍼로 읽는다. 
rack awareness

 
Never loose all data if entire rack fails.
하둡 관련 링크
offset
오프셋이란, 두 번째 주소를 만들기 위해 기준이 되는 주소에 더해진 값을 의미한다. 예를 들어, 만약 아래의 수식에서 C가 100번지의 주소를 가리키고 있다면, 그 수식의 결과는 107번지를 의미할 것이다.
C + 7
여기서 이 수식 내의 "7"이, 바로 오프셋이다. 
applications
어플리케이션 이란 것은 운영체제를 제한 나머지 프로그램으로 컴퓨터를 부릴 수 있는 소프트웨어를 총칭한다
API
API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
cache
캐시란 데이터를 임시로 저장해두는 장소를 말한다. 이를테면, 사용자가 요구한 웹 페이지는 하드디스크 내의 캐시 디렉토리에 저장된다. 이런 방법으로, 사용자가 최근에 열어본 페이지로 다시 돌아왔을 때 브라우저는 시간을 줄이고 네트웍에 추가 부담을 덜기 위해, 원래의 서버에서 정보를 찾아오는 대신에 캐시로부터 데이터를 가져오는 것이다.
Implications
 
원자성
atomic
원자성(atomicity)은 데이터베이스 시스템에서 ACID 트랜잭션 특성중의 하나다.

 


프롤로그
『부의 추월차선』
머리말 람보르기니 예언’이 실현되다
프롤로그 부자가 되는 길에는 지름길이 있다
 
지름길로 가지 못할까?
 
  • 지금 부자가 아니라면 현재 하고 있는 일을 그만둬라. 책의 대부분은 하지마 조언에 관한 것.
1 부자 되는 걸리는 시간 50 ? 맙소사 !
1 ‘천천히 부자 되기’로는 가망이 없다
2 돈은 기하급수적으로 벌어들이는 것이다
 
서행차선에서 추월차선으로 갈아타기
  • 웹사이트 구축 의뢰는 시간을 들여야만 수입을 얻을 수 있는 구조였다. 의뢰가 많으면 많을 수록 더 많은 시간을 할애해야 했다.  
2 제대로 공부하고 역경을 이겨내야 목적지에 도달한다
3 백만장자는 사건이 아니라 과정에 의해 만들어진다
4 부를 향한 재무 지도 세 가지
 
3 가난을 만드는 지도 : 인도(人道)
5 돈은 문제를 해결하지 못한다
6 부자처럼 보이는 것과 진짜 부자인 것의 차이
7 평범하다는 것은 현대판 노예라는 뜻이다
8 ‘인생 한 방’을 노리는 사람은 가난을 면치 못한다
9 인생을 남의 손에 맡기고 남 탓하며 사는 사람들
 
인도 여행자의 부의 공식
 
  • = 소득 +
  • = 신용거래는 좋은 제도라 생각. 월급이 적어도 현재를 즐길 수 있다고 생각.
인도를 걷는 사람은 누구인가?
 
 
 
 
  • 재무적 목적지와 계획의 부재 
  • 여분의 돈이 생기면 일시적인 욕구 때문에 라이프 스타일의 노예로 살아감.
  • 일반적인 인도 여행자: 소득이 있지만 가난하다.
  • 미국의 55 이하 국민의 57% 순자산이 없거나 마이너스이다.
인도 여행자의 사고방식
 
 
  • 부유한 인도 여행자: 소득이 있고 풍족함에도 파산하는 경우가 있음.
  • 돈을 관리하는 방법을 배우는 데 있어서 소득은 중요하지 않다.
소득과 부의 신기루
  • 미숙한 돈 관리 능력을 더 많은 돈으로 해결하는 것은 불가능하다.
부의 3요소
 
  • 3F 가족(Family 관계), 신체(Fitness 건강), 자유(Freedom, 선택) 
라이프 스타일의 노예
 
 
 
  • 빚과 라이프스타일의 노예가 되면 사람들은 계속해서 일에 매이고 관계가 소홀해진다.
  • 수많은 부자들과 고소득자들이 불행을 겪는 이유는 자유를 잃었기 때문이다. 그들이 돈을 쥐고 있는게 아니라 돈이 그들을 쥐고 있기 때문임.
사고할 능력이 된다면 사지 말아야 한다는 사실을 깨달을 것이다.
  • 원하는 물건을 현금으로 살 수 있고, 앞으로 상황이 어떻게 변하느냐와 관계없이 지출로 인해 라이프스타일에 영향을 받지 않을 수 있다면 감당이 가능한 것.
스스로 번 돈은 스스로 만든 행운으로부터 온다.
 
  • 행운이란 하나의 사건이 아니라 과정의 결과다.
  • 운을 이해하려면 더 높은 확률이 기대되는 과정에 참여하라.
4 평범한 삶을 만드는 지도 : 서행차선
10 절약만으로는 절대 부자가 될 수 없다
11 당신은 자유를 사기 위해 자유를 팔고 있다
12 당신이 부의 길이라고 믿었던 것들의 함정
13 학위보다 빚더미를 먼저 안겨 주는 교육
14 자가당착에 빠진 서행차선의 구루들
15 서행차선을 벗어나는 비밀의 출구
 
천천히 부자되기 전략
 
 
 
 
 
  • 원동력은 시간
  • 불황에 직업을 잃으면, 계획은 실패다.
  • 주식으로 모든 돈의 50% 잃어도, 부동산 자산의 40% 손해봐도 실패다.
  • 이러한 계획은 당신이 통제할 수 없는 시간과 요소들에 근거해서 짜여있으므로 실패할 수 밖에 없다.
서행차선 부의 공식
 
 
  • = (주요수입원:직업) + (부의 증식 방법: 투자)
  • = 악마
  • 자유를 사기 위해 자유를 팔고 있음.
통제 불가능한 제한적 영향력
 
 
  • 큰 돈을 모으기 위한 조건 1) 통제력 2) 영향력
  • 24시간으로 제한된 시간에 얽매이는 시급이나 연봉은 그 한계치를 벗어날 수 없다.
  • 복리를 통한 부의 증식에는 50년이 걸린다.
매수 보유 전략은 끝났다.
 
  • 이전에는 삼성 주식 들고 있다가 대박나는 케이스가 있었다.
  • 반토막 나는 펀드가 부지기수
비밀의 출구
 
 
 
 
 
  • 명성: 명성을 얻으면 내재가치의 수학적 한계를 깨뜨릴 있다. e.g. 운동선수, 가수, 뮤지션, 배우, 연예인
  • 대체 불가능한 사람이 될 것: 남들에게 없는 특별한 재능이나 능력을 가질 .
  • 회사의 CEO 되기: 회사의 스톡옵션을 수 있는 위치에 갈 것.
5 부자를 만드는 지도 : 추월차선
16 빠르게 부자가 되기 위한 사고방식은 따로 있다
17 직장 같은 사업은 No! 사업은 시스템으로 굴려라
18 초고속으로 돈을 벌고 불리는 방법
19 추월차선 진입을 예고하는 다섯 가지 사업 씨앗
20 부자가 복리를 활용하는 방식
21 돈이 저절로 따라오는 영향력의 법칙
 
추월차선이란?
 
 
 
 
 
  • 1) 통제 가능한 무제한적 영향력
  • 2) 사업: 직업이 아닌 사업
  • 3) 라이프스타일
  • 4) 빠른 형성
  • 추월차선 전략의 리스크는 서행차선과 크게 다르지 않지만, 보상은 훨씬 크다.
추월차선 여행자의 사고방식
 
 
 
 
 
 
 
 
 
 
  • 부채: 빚으로 시스템을 설계하고 키울 있다면 빚은 유용해
  • 시간: 시간은 돈보다 훨씬 중요한 자산
  • 교육: 배움을 멈추는 즉시 성장도 멈춘다.
  • : 돈은 어디에나 있고 충분히 있지. 나로 인해 감명받은 사람의 수가 곧 내가 벌어들이는 돈이야. 돈은 내가 만들어낸 가치를 반영해.
  • 주 수입원: 사업 시스템과 투자
  • 전략: 많은 사람을 도울수록 시간과 , 그리고 개인적 성취 면에서 더 많은 것을 얻지
  • = 순이익 + 자산의 가치
  • 목적지: 사업과 투자로 부터 평생 소극적 소득 거두기
추월차선 지도의 비밀 풀기
 
 
  • 소비자에서 생산자가 되라. e.g. 금을 캐려고 땅을 파는 대신 삽을 팔아야 한다.
  • 직업과 다름 없는 소규모 자영업은 사업이 아니다. e.g. 자신의 편의점에서 일하기
추월차선 부의 방정식
 
 
 
  • = 순이익 + 자산가치
  • 순이익 = 판매개수 x 단위당 이익
  • 자산가치 = 순이익 x 산업 승수 (주식의 경우 PE)
  • 부의 방정식의 핵심은 제품의 판매가능수를 거의 무제한으로 잡는 것
부자는 자산을 만들어내고 주무른다
 
 
 
 
 
 
  • 해리슨 그룹의 3,000명의 500백만 장자 추적 조사. 80% 자영업을 시작했거나 작은 회사를 폭발적으로 성장 시켰음.
  • 소비: 서행 차선 사람들은 사자마자 가치가 감소하는 자산을 산다. (자동차, 보트, 전자제품, 명품 ) 추월차선을 달리는 사람들은 가치가 증가하는 자산을 사거나 판다. (사업체, 브랜드, 현금성 자산, 지적재산, 라이선스 등)
증식 비율
 
 
 
 
 
  •  추월차선 세계에서는 산업 승수 1700% 수백만 사용자 수로 게임을 하지만, 서행차선의 세계에서는 4% 연봉 상승률과 8% 펀드 수익률, 40년이라는 숫자로 게임을 한다.
  • 추월차선 여행자들은 통제하고 서행차선 여행자들은 희망한다.
부의 양면 공격
 
 
  • 추월 차선에서의 부 증식 방법은, 가치있는 자산을 만들거나 사들여서, 가치를 증대시키거나 변수를 조작한 , 다시 되파는 일을 바탕으로 해야 함.
현금화 가능한 자산 만들기
  • Exit 통해 초고속으로 부를 증식할
  • Exit 시기를 잘못 읽으면 돈을 기회를 날리는
부의 산업화
  • 부의 통제권을 시간, 상사, 주식 시장에 뺐기지 마라
Passive Income
 
 
 
  • 일하지 않으면서 벌어들이는 소득
  • 추월 차선의 목적:1) 지출과 라이프스타일 유지에 필요한 비용을 초과하는 소극적 소득의 창출하는 것 2) 나이게 관계없이 재정적 자유를 갖는
다섯가지 추월 차선 사업 씨앗
 
 
 
 
  • 임대시스템 (A): 부동산, 장비나 차량 임대, 로열티, 라이선스
  • 컴퓨터, SW 시스템 (A-): 웹사이트
  • 콘텐츠 시스템(B+): , 블로그, 영화
  • 유통 시스템(B): 유통은 제품을 군중에게 전달하는 방법. 홈쇼핑, 이커머스, 체인점
  • 인적 자원 시스템(C): 인적자원시스템은 운영하기에 가장 비용이 많이 들고 복잡하다. 인간이란 예측이 불가능하고 비싼 자원인데다가 통제가 어렵다.
부자가 복리를 활용하는 방식
 
  • 목돈을 만들어서 복리로만 생활이 가능하도록 하라.
  • 때문에 저축은 자유를 위해 투쟁할 군대를 모으는 방법이다.
영향력의 법칙
 
  • 더 많은 인생에 영향을 미칠수록 당신은 더 부자가 된다.
  • 규모와 중요도가 함께 충족되면 억만장자가 탄생한다.
6 지금 당신 인생의 운전대를 잡아라
22 당신을 소유하고 있는 것은 누구인가
23 수백 가지 선택의 결과가 지금의 당신이다
24 올바른 선택을 위한 가중평균 의사결정 매트릭스
25 역풍으로 작용하는 사람들에게 등을 돌려라
26 노동 시간은 자유 시간의 대가다
27 시스템과 나무를 키우는 교육
28 시스템과 사업에 진정으로 헌신하고 있는가
 
추월차선 사업에 가장 좋은 사업구조
 
 
 
 
 
 
 
  • 1) 주식회사: 주식회사와 주식회사의 소유주는 이중 과세 대상이 된다는 단점이 있지만, 자산 증대 전략에 적합하다. 순이익 보다는 자산 증대에 집중하는 경우 적합하다. 
  • 2) 소규모회사: 소유주 개인의 소득세만 부과. 주주의 수에 제한이 없는 주식회사와는 달리 100명을 넘을 없으며 자격에도 제한이 있음.
  • 3) 유한책임회사: 회사의 이익이 바로 주주들에게 돌아가고 회사는 과세의 대상이 아님.
기업 형태 선택하기
 
 
 
 
 
 
 
  • Exit 전략은 무엇인가? 주식 상장인가? 개인 투자자 매각인가?
  • 성장 전략은 무엇인가?
  • 최악의 경우 법적 책임은 어디까지 물어야 하는가?
  • 사업자금을 현재 조달할 것인가 미래에 조달할 것인가?
  • 직원을 채용할 것인가?
  • 새로운 동업자를 맞을 것인가?
  • 빠른 시일 내에 수익을 낼 것인가, 조금 기다릴 것인가?
운전자를 위한 조언
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 새로운 믿음을 위한 정보, 수단, 사람들을 찾아라.
  • 1) 최악의 결과 분석(WCCA) : i. 최악의 결과는 무엇인가? ii. 나올 확률은? iii. 정도 리스크는 감당이 되는가?
  • 2) 가중평균 의사결정 매트릭스(WADM)

기생적인 부채의 비용
 
 
 
  • 소비 대상의 진짜 가격을 찾아라. 내가 시간을 구매에 썼는지 계산하라. e.g. 시간에 10달러를 버는 사람이 4,000달러 오디오 세트를 샀다면 400시간을 비용으로 치른 것이다. (2018 나는 세후연봉/235 = 시급 17400)
시스템과 사업에 진정으로 헌신하고 있는가.
 
 
 
 
  • 추월차선의 승자들은 헌신이란 레드라인에서 만들어진다.
  • 흥미있는 사람은 사업을 하고 싶다는 것에 그치지만, 헌신하는 사람은 유한책임회사 설입에 필요한 서류를 정리한다.
  • 흥미있는 사람은 부유해보이지만, 헌신하는 사람은 부유해지기 위해 계획을 세운다.
지적인 모험에 도전하라.
 
 
 
  • 내 투자금액의 가치는 절반으로 폭락할 수도 있다. 불리한 점은 한정적이고 유리한 점은 상당하다. 이것이 지적인 위험이다.
  • 다른 사람들처럼 살지 않으려면, 다른 사람들이 하지 않을 것을 해야만 한다.
7 제한 속도 없이 달릴 수 있는 멋진 길이 있다
29 올바른 길로 가야 부로 통한다
30 돈을 좇지 말고 욕구를 좇으라
31 진입 장벽이 높거나 남달리 탁월하거나
32 통제권을 갖고 있어야 큰돈을 만질 수 있다
33 사업의 힘은 규모에서 나온다
34 시간을 쏟아 붓지 않아도 돈이 되는 사업
35 추월차선 5계명을 만족시키는 사업 아이템
36 성공은 아이디어가 아닌 실행에 있다
37 재무적 문맹 상태를 벗어나라
 
영향력을 향한 길, 추월차선 5계명
  • 욕구, 진입, 통제, 규모, 시간의 계명
욕구(Need) 계명
 
 
 
 
 
 
 
 
 
 
 
  • 욕구를 충족시키는 사업, 그리고 가치를 제공하는 사업이 성공한다.
  • 돈이든 꿈이든 진정 하고 싶은 '이든 자신의 이기적인 욕구의 관점에서 사업을 바라보는 것을 당장 그만두어라. 대신 욕구와 곤란함과 문제점과 서비스 결함과 정서를 쫓으라.
  • 사업의 올바른 토대는 이기적인 내적 욕구가 아닌 시장의 외적 욕구에 기반을 두어야 한다.
  • 돈을 끌려면 돈을 잊어라. 성공적인 사업은 시장과 소비자가 결정한다.
  • : 좋은 기분, 문제해결, 교육, 외모, 안전, 긍정적 정서, 욕구충족(음식~성욕), 삶을 편하게, 꿈과 희망을 고취
진입(Entry) 계명
 
 
 
 
  • 진입 장벽이 높거나 남달리 탁월하거나.
  • 사업에 진입하는 것은 값을 치러야 하는 일련의 과정이지 일회성 행사가 아니다.
  • 모두 다 아는 일반 대중과 같은 선택을 하면 그들과 같아진다.
통제(Control) 계명
 
 
  • 사업을 통제한다는 것은 사업에 있어 모든 것-회사, 상품, 가격, 수익구조, 경영방식 등- 통제함을 뜻함.
  • 반례로, 세일즈 맨은 회사의 정책, 절차, 제품군과 가격 구조에 자신의 수입이 좌우된다.
규모(Scale) 계명
 
  • 판매 개수에 상한치가 없어야 한다. 중요도나 규모가 커져야 한다.
시간(Time) 계명
 
 
  • 시간을 쏟아 붓지 않아도 돈이 되는 사업
  • 추월차선 여행자들은 그 길을 자동화할 방안을 생각해야 한다.
강력한 추월차선1: 인터넷
 
 
 
 
 
  • 1) 가입자 기반: 매달 구독료 모델
  • 2) 콘텐츠 기반: 가장 어려움. 진입장벽이 매우 낮음.
  • 3) 고객발굴 서비스: 성형수술 업계
  • 4) 소셜 네트워크
  • 5) 중개 시스템: 페이팔
  • 6) 광고
  • 7) 전자상거래
강력한 추월차선2: 혁신
  • 혁신이란, 제조와 그에 따르는 유통
  • 발명가가 여기에 속함. (한경숙 스팀 다리미)
강력한 추월차선3: 의도적인 되풀이
 
  • 인적사원 시스템이나 반복적인 성공을 통해 실현
  • 체인점이나 프렌차이즈를 통해 수백, 수천 개의 가게를 내는 .
성공은 아이디어가 아닌 실행에 있다.
 
  • 경쟁은 어디에나 있어, 그냥 시작해, 잘하면 돼
  • 큰 아이디어에 집착하지 말고, 나은 아이디어에 집중하라.
재무적 목표설정하기
 
 
 
 
 
 
 
 
 
  • 인생의 비극이란 목표를 이루지 못한 것이 아니라 아무런 목표도 없이 살아가는 것이다. - 벤자민 메이스
  • 1단계: 라이프스타일을 정의하라 
  • 2단계: 비용을 계산하라
= 총생활비/60% = 세금 등을 감안한 생활비 
  • 3단계: 목표를 정하라( 가지 하나)
돈이 들어오는 시스템 목표액
= 생활비 x 12 / 5%(이자수익)
사업 시스템 목표액
= 생활비 x 5
= 40% 세금 + 40% 시스템 자금 + 20% 라이프스타일
8 당신의 실행력이 당신의 최고 속도다
38 아이디어를 실행하는 사람이 모든 것을 소유한다
39 최고의 사업 계획은 실행 실적이다
40 고객에게 힘이 있다! 고객에게 충성하라!
41 사업 파트너십은 결혼만큼 중요하다
42 경쟁사를 어떻게 활용해야 할까?
43 추월차선 비즈니스의 접근 포인트
44 부자가 되기 위해 기억해야 할 20가지
 
부록 독자와의 Q&A
추월차선 라이프스타일을 위한 40가지 다짐
 
실행을 통해 얻을 수 있는 비밀장부
 
 
 
 
 
 
 
  • 고객의 불평과 불만
  • 1) 변화에 대한 불만: 코카콜라의 새로운 제조법 같은 잘못
  • 2) 기대로 인한 불만: 서비스가 실패했거나 기만적인 마케팅
  • 3) 제공하지 않는 서비스에 대한 불만: 기회의 금광
  • 4) 거짓 불만: 블랙 컨슈머
  • 고객 서비스가 부족한 곳에 좋은 기회가 있는 법. 뜻밖의 우수한 고객 서비스로 보답하라. 고객이 스스로 입소문을 것이다.
  • 상장 기업은 주주를 1순위로 기업을 운영한다고 생각할 있으나, 고객이 결국은 급료를 지불하는 것이다.
사업 파트너십은 결혼만큼 중요하다.
 
 
  • 상호 보완할 수 있는 기술을 가진 사람과 동업을 하라고들 말한다. (외모만 보는 것과 같음)
  • 허나, 중요한 것은 같은 직업윤리, 비전, 결실의 타이밍, 사업 방향성, 신뢰, 성격 유형 등이 중요함.
경쟁사 활용
 
  • 경쟁사의 약점을 자신들의 장점으로 차별화하는 데에 써라
추월차선 비즈니스 접근 포인트
 
 
 
 
 
 
  • 기업이 아닌 상표를 만들어라. (상징)
  • 참신한 판매전략 e.g. 페덱스 무슨 일이 있더라도 소포가 하룻밤 사이에 꼭 도착해야 한다면' 도미노 피자 ‘30분 안에 배달되지 않으면 무료'
  • 판매전략 개발 단계 1) 혜택을 밝혀라 2) 독특함을 가져라 3) 명확한 증거를 대라 4) 짧고, 분명하고, 간결하게 5) 모든 마케팅 소재와 결합하라. e.g. 버스, 광고, 명함, 이메일 signature 6) 현실화하라.



+ Recent posts