달력

5

« 2024/5 »

  • 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
6분정도... 짧지만, 괜찮은 강의였습니다.

동영상 보기

세상은 갑, 을... 이것이 소프트웨어 엔지니어의 가장 큰 문제다.
을을 기술로 안보고 노동으로 보는 문화.
잘못된 롤모델 : 스티브잡스, 빌게이츠... 소프트웨어 엔지니어를 이들같은 천재로 본다.

문제
FDD (Faith-Driven Development) : 신념에 기반한 개발 -> 걸레같은 소스를 만들고 에러가 없어야 한다고 기도한다.
관성화된 야근. 
준비되지 않은 팀장. 

해결
회사에 자산을 남겨야 한다.(소스, 문서)
나중에는 아키텍트가 될수 있게 준비해야 한다.
Test-Driven Development 를 해야 한다.
우리가 만든 소스를 반드시 다시 읽어봐야 한다.
한국은 도구 사용률 최하.
성실한 시간관리
자기 포트폴리오 확인. -> 어제 못했지만 오늘 할 수 있게 된 일을 확인하라
인간에 대한 이해 : 인문학 공부
공부를 열심히 : 죽도록 공부해도 죽지 않는다.

목표
작품이 아니라 제품을 만들어야한다. 인간이 이해할 수 있는 것이 시장에 팔린다.

목표달성을 위한 세가지
인간/기술의 융합, 개인의 창의력, 그리고 갑이되어도 을을 잊지 않는 협동.
:
Posted by Elick
정의
개체-관계 모델은 1976년에 피터 첸(Peter Chen)에 의해서 최초로 제안되었으며 그의 논문을 통 해 이 모델의 기본적인 구성 요소가 정립되었다. 
그 후 데이터 모델을 만들어 주는 많은 도구와 기법 이 소개되었는데 계층적 데이터 모델, 네트워크 데이터 모델, ANSI/SPARC 데이터 모델, 개체-관 계 데이터 모델, 의미 객체 모델 등을 예로 들 수 있다. 
이 가운데에서 개체-관계 모델은 표준적인 데이터 모델로 부상했는데 이 모델이 지니고 있는 단순성 때문에 현재 개념/논리 데이터 모델링에서 가장 일반적으로 사용되고 있다.
이 모델에 서브타입이 추가되면서 확장된 개체-관계 모델 (Extended Entity-Relationship model)이 만들어졌으며 이제 일반적으로 개체-관계 모델이라고 하면 이 확장된 개체-관계 모델을 의미한다.

개체-관계 모델은 개체-관계 다이어그램(ERD, Entity Relationship Diagram)으로 표현된다. 
개체-관계 다이어그램은 최종 사용자의 관점에서 데이터 구조를 그림 형태로 묘사하기 위해 개체, 관계, 속성이라는 세 개의 기본 요소를 사용하며, 엔터티와 이들간의 관계를 미리 약속된 도형을 사 용하여 알기 쉽고 일목요연하게 그림으로 표시한 것이라 정의할 수 있다.

구성요소
* 엔터티 (Entity)
업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들간에 동질성을 지닌 것으로 볼 수 있는 개체 집합이나 그들이 행하는 행위의 집합
* 속성 (Attribute)
엔터티에 저장되는 개체 집합의 특성을 설명하는 항목
* 식별자 (Unique Identifier)
인스턴스를 구별해 낼 수 있는 속성 혹은 속성들.
* 관계 (Relationship)
엔터티와 엔터티간 연관성
* 카디날리티 (Cardinality)
관계에 참여하는 하나의 개체에 대해 다른 엔터티에서 몇 개의 개체가 참여하는지를 나타내는 것. (1:1, 1:M, M:M)
* 존재 종속 (Existence- Dependent)
한 엔터티의 존재가 다른 엔터티(들)의 존재에 영향을 받는 경우를 이르는 말.
* 서브타입 (Sub-type)
서브타입은 정확한 의미로는 서브 타입 엔터티이며 그것의 전체집합인 슈퍼타입(Supertype)의 부분집합.

표기법
* 바커 표기법 (Baker Notation)
영국 컨설팅 회사 CACI에 의해 처음 개발되었고 리차드 바커(Richard Barker)에 의해 지속으로 업그레이드 되었다. 오라클에서 Case Method(Custom Development Method)로 채택하여 사용하고 있다.
* I/E 표기법 (Information Engineering Notation)
Information Engineering(I/E)은 1970년에 제임스 마틴(James Martin)에 의해서 개발되었다. 이 모델은 관계의 다(Many)쪽을 나타내기 위해 까마귀 발을 사용하기 때문에 때때로 까마귀 발 모델(Crow’s Foot Model)이라고 부른다

:
Posted by Elick
2011. 1. 27. 14:15

OLAP vs OLTP Work/Database General2011. 1. 27. 14:15

데이터베이스의 모델을 설계할 때, 혹은 데이터 베이스를 사용하는 환경을 결정할 때 가장 중요한 요소 중 하나는 해당 데이터베이스의 용도가 OLTP(Online Transaction Processing)용인지 아니면 DSS(Decision Support System)용인지를 파악하는 것이다.
두 가지는 배타적인 것이 아니므로 OLTP용 데이터베이스에 DSS적인 성격이 포함되기도 하지만, 보통 대부분의 데이터베이스들은 어느 한쪽의 특성이 더 크다.

OLTP
On-Line Transaction Processing
주 컴퓨터와 통신 회선으로 접속되어 있는 복수의 사용자 단말에서 발생한 트랜잭션을 주 컴퓨터에서 처리하여 그 결과를 즉석에서 사용자 단말 측으로 되돌려 보내 주는 처리 형태. 

트랜잭션:단말에서 주 컴퓨터로 보내는 처리 단위 1회의 메시지로, 보통 여러 개의 데이터베이스 조작을 포함하는 하나의 논리 단위. 
예를 들어, 데이터베이스 내의 어떤 표의 수치를 변경하는 경우, 
그 표와 관련된 다른 표의 수치도 변경하지 않으면 데이터 무결성(data integrity)을 유지할 수 없다. 
이런 경우에는 2개의 처리를 1개의 논리 단위로 연속해서 행해야 하는데, 이 논리 단위가 트랜잭션이다. 
1개의 트랜잭션은 그 전체가 완전히 행해지든지, 아니면 전혀 행해지지 않든지 둘 중 하나여야 한다. 
그 이유는 1개의 트랜잭션 처리 도중에 그 트랜잭션의 처리를 중지하면 데이터 무결성이 사라질 우려가 있기 때문이다. 

OLTP용 데이터베이스들은 기업(혹은 조직)내부의 트랜잭션에서 발생되는 데이터들을 효율적으로 저장하는 데에 초점을 맞추고 있다. 트랜잭션(Transaction)의 특징은 일련 작업들이 모두 성공해야만 하나의 트랜잭션이 수행되고, 이를 트랜잭션을 커킷(Commit)했다고 이야기 한다.
트랜잭션 중 단 한 가지 작업에서 오류가 발생했다면, 모든 트랜잭션을 롤백(Rollback)시킨다. 트랜잭션의 역할이 대부분 데이터베이스에 대한 변경 작업이므로, 데이터베이스의 데이터들은 자주 변경되고 액세스된다. 따라서 읽기 작업보다는 쓰기 및 변경, 삭제 작업이 우선하는 경우가 많다.
이러한 OLTP용 데이터베이스의 최대 목적은 현재 기업의 데이터에 대한 무결성을 확보하는 것이다. 트랜잭션이라는 것이 동시에 수 십에서 수 백, 수 천 명의 사용자들이 수행하므로 데이터가 잘못 변경되거나, 잘못된 의미를 가져서는 이를 운영 데이터로 사용할 수 없다. 따라서 데이터 무결성을 확보하기 위해서 두 가지의 주요 원칙을 지켜야만 OLTP라고 할 수 있다.
발생한 데이터 변경 사항이 이용되는 모든 곳에 반영되어야만 한다.
트랜잭션을 지원해야만 한다.
이러한 트랜잭션 지향의 OLTP 데이터베이스는 데이터의 분석보다는 트랜잭션 성능 및 데이터 무결성을 확보하기 위해서 설계된다. OLTP용 데이터 베이스는 트랜잭션을 중요하게 여기므로 수 초 이내에 데이터가 변경되어야 하며, 데이터의 구조는 데이터 무결성을 지키기 위해서 엄격하게 매우 복잡하다. 데이터의 크기도 이력관리를 하지 않는다면 대부분이 수 기가 바이트 이하다.

OLAP
On-Line Analytical Processing
이용자가 직접 데이터베이스를 검색, 분석해서 문제점이나 해결책을 찾는 분석형 애플리케이션 개념. 

대규모 데이터를 이용한 질의 검색 시 발생한 대량의 결과값을 단순히 사용하기는 어렵다. 대부분 이 같은 질의는 복수의 데이터 정보 테이블을 기반으로 처리되고, 요약화된 정보를 얻기 위해 연산 처리가 수반되어 장시간이 소요되기 때문이다. 올랩 툴 또는 올랩 서버는 온라인 검색을 지원하는 데이터 웨어하우스(DW) 지원 도구인데, 이 같은 대규모 연산이 필요한 질의를 고속으로 지원한다.

DSS 용도의 데이터베이스를 OLTP(Online Analysis Processing)이라고 부른다. CRM이나 데이터웨어하우스, 데이터 마트 등이 이러한 OLAP 솔루션에 들어간다. OLTP의 단점들을 극복하기 위해서, 데이터를 분석 및 읽기 작업에 적합하도록 가공하여 사용하게 된다.
이와는 반대로 OLAP 데이터들은 트랜잭션이나 데이터 무결성을 확보할 필요가 없다. 이미 운영 데이터베이스에서 이러한 무결성이 확보된 데이터를 변환/추출한 것이기 때문이다. 동시에 여러 명이 사용하는 OLTP 데이터베이스에 비해서 분석을 위한 수 십 명 내외의 사람들이 사용하므로, 응답 결과도 그다지 빠를 필요는 없다. 그래서 상당 기간의 데이터들을 분석하기 때문에, 다루는 데이터 양은 OLTP보다 많아질 수 있다. 대부분의 정보들이 시간을 기준으로 분석되기 때문이다.

OLTP 와 OLAP의 차이점
OLTP은 현재 업무의 효율적인 처리에 관심을 갖는 반면에 OLAP는 의사결정에 도움되는 데이터 분석에 관심을 가진다.
OLTP와 OLAP 간의 실제적인 관점에서의 주된 차이는 OLTP는 거의 읽고/쓰는 작업이, OLAP는 대량의 읽기 작업이 중심이라는 것이다. OLTP에서의 I/O 작업은 랜덤 I/O 이다. 여기를 읽고서 데이터 수정하고, 또 저기를 읽고 데이터를 삭제한다. 반면, OLAP에서는 순차적인 I/O가 주된 작업이다. 여기서부터 저기까지를 쭈욱 읽어 들인다. 몇 배만큼이나 인데긋 크기가 커질 수 있다. 일기 작업이 주된 목적이기 때문이다.

 구분  OLTP  OLAP
데이터 구조  복잡  단순
 데이터 갱신  동적으로 순간적  정적으로 주기적
 응답시간  수 초 이내  수초에서 몇분 사이
데이터 범위  수십일 전후  오랜기간(몇년)
 데이터 성격  정규적인 핵심 데이터  비정규적인 읽기 데이터
 데이터 크기 수 기가 바이트   수 테라 바이트 
데이터 내용  현재 데이터  요약된 데이터 
 데이터 특성  트랜잭션 중심  주제 중심
 데이터 액세스 빈도  높음  보통
 질의 결과 예측  주기적이며 예측 가능  예측하기 곤란


:
Posted by Elick
2011. 1. 26. 15:56

데이터마이닝 (Datamining) Work/Database General2011. 1. 26. 15:56

1. Overview
가. 정의
  * 대용량의 숨겨진 데이터로 부터 유용한 정보 및 패턴을 추출하여 의사결정에 활용하는 과정

나. 통계적 분석과 데이터마이닝의 비교
 구분 통계적 분석  데이터마이닝 
데이터 규모  Sampling 기반  대용량 기반 
장점  수치데이터 의존
명확한 결과 제시 
과거 데이터 특성에 의존
의사 결정을 위한 고급 정보
단점  Sampling 선정문제
입력값의 타당성 
다양한 전문지식 필요 

2. 데이터마이닝 기법
  * 예측적 모델(Predicative Mode) : 이미 알려진 졀과로 예측
  * 탐색적 모델(Descriptive Mode) : 결과가 알려지지 않은 데이터로 예측
 구분 기법 내용 예시 
예측적 모델  의사결정 나무(Decision Tree)  축적된 데이터를 분석하여 나무모형으로 분류  우수고객(예탁금->약관->거래년수) 
  신경망(Neural Network)  뇌를 모방한 방식으로 학습을 통한 예측  우수고객 및 연체자 분석(입력-은닉-출력)

분류화(Classification) 특정 특성으로 분류 신규 고객, 불만 고객
탐색적 모델  연관성 분석(Association)  데이터의 종속관계를 분석  기저귀와 맥주
  연속규칙(Sequence)  연관성 분석에서 시간정보를 추가한 방식(이력사항 필요)  신차구입 후 캠핑장비 구입 
  군집화(Clustering) 특정 거리 기반으로 데이터 분류(K-Means 알고리즘)  기업 밀집 지역에 은행 지점 입점 

3. 데이터마이닝 절차 및 활용
가. 데이터 마이닝 절차
 절차 내용  고려사항 
요구분석  데이터마이닝 목적을 정의  불량 고객 최소화
신규 고객 창출 
데이터 선택  필요한 데이터의 위치, 형태 파악 및 통합  DW 활용 
데이터 정제 정확성을 높이기 위한 데이터 모호성, 중복성 제거 및 오류 데이터 보정  오류 데이터 보정 (9월 31일)
데이터 보강  데이터 양을 늘이기 위한 외부데이터 추가  외부 데이터 활용 
데이터 변환  불필요한 데이터 제거 및 신규 파생데이터 생성 파생 데이터 생성 (월 소득 200 이상 ->'1')
마이닝 수행  비즈니스 목적에 맞는 마이닝 기법 선택 및 수행 (의사결정 나무, 신경망.. 등)  해석 가능한 모델 선택 
해석 및 평가  마이닝 결과를 해석하고 실 업무에 적용하고 평가  Feedback 

나. 데이터마이닝의 활용
 구분 분야  내용 
금융  은행  우수 고객, 대출 심사 
  카드  신용평가, 카드사고 감시, 고객 세분화 
  증권  주가 예측 
  보험  Claim 분석 
통신  이동 통신  연체자 분석, 고객이탈 방지, 고객 충성도 분석 
유통  유통  마켓팅 전략분석, 고객 관리 
제조  제조  불량율 예측, 품질 관리 
소매  소매  고객 세분화 마켓팅, 교차 판매 
의학  의료  환자의 질병 예측, 환자의 특성에 따른 의약품 부작용 분석 

4. 데이터마이닝의 기대효과 및 의견
가. 데이터마이닝의 기대효과
 BSC 관점 재무관점  경쟁력 향상, 수익 증대, 주주의 가치 증대 
  고객관점  욕구에 부합하는 제품사용, 기업에 대한 충성도 향상 
  프로세스 관점  고객 세분화, 불량율 감소 등을 위한 내부절차 개선 
  학습과 성장  마켓팅 정보, 판매 정보, 고객 정보 등 유용한 정보 획득 

나. 의견
  * OLAP, 지능현 Agent, Expert 시스템, KMS 등과 연계되어 주요 의사결정 지원 기술요소로 정착이 기대됨.
  * 통계적 분석 등 경험이 필요하며, 전문가의 수준에서 이해가 가능한 알고리즘 등 보편적인 사용이 현실적으로 쉽지 않으나, Visualization 분야 및 신용카드 회사 등 마이닝이 잘 맞는 특정 산업을 중심으로 사용이 용히한 패키지 형태로 확산될 전망임.
:
Posted by Elick
2011. 1. 25. 18:39

2PL(2 Phase Lock) Work/Database General2011. 1. 25. 18:39

정의
분산, 다중사용자 환경에서 트랜잭션의 동시 실행을 보장하면서 데이터베이스의 일관성을 유지하기 위한 트랜잭션 제어 메커니즘.
트랜잭션 serializability를 보장
Expanding : locks are acquired and no locks are released. => lock만 수행
Shrinking : locks are released and no locks are acquired. => unlock만 수행
S2PL (Strict 2PL) : 트랜잭션이 종료되어야 Write Lock을 Release
SS2PL (Strong Strict 2PL) : 트랜잭션이 종료되어야 Write Lock, Read Lock을 Release => 대부분의 상용 DB에서 지원
:
Posted by Elick
2011. 1. 25. 18:38

2PC (2 Phase Commit) Work/Database General2011. 1. 25. 18:38

정의
분산 데이터베이스 환경에서 원자성을 보장하기 위해 분산 트랜잭션에 포함되어 있는 모든 노드가 Commit하거나 Rollback하는 메커니즘
분산 환경의 데이터 처리에서 데이터 신뢰성 향상을 위한 트랜잭션 처리 구조

필요성
분산 데이터베이스 환경에서는 Commit과 Rollback만으로 여러 노드에 분산된 데이터베이스의 일관성이 보장되지 않음
분산 데이터베이스에서는 모든 노드의 데이터베이스에서 트랜잭션이 성공적으로 완료되었음을 확인한 후에 트랜잭션의 처리가 완료되어야 함

실행주체, 처리절차
실행주체: 서버, 조정자(Global Coordinator),참여자(Participant),클라이언트(Client)
2PC의 처리절차 (GC: Global Coordinator, C:Client 노드, P:Participant 서버, LC:Local Coordinator)
1. C -> G : Commit요청 (트랜잭션 처리 요청)
2. G -> LC in P's : Commit Point Site결정 (분산 로컬 사이트에 트랜잭션 처리 알림)
3. LC in P's -> G : Prepare메시지 전송
4. G -> LC in P's : Prepare메시지 응답
5. G -> LC in P's : Commit/Rollback 명령

장단점
장점: 분산환경에서 데이터 신뢰성 향상을 위한 방안
단점: 분산의 규모가 증가할수록 다양한 환경이 존재하므로 신뢰할 수 있는 트랜잭션 보호가 어려움

2PC 활용시 고려사항
다단계로 증가시 신뢰성은 증가하지만 오버헤드는 증가하므로 적정수준 결정
상용 DBMS로는 완벽한 2PC를 지원하기 어려움
TP-monitor등의 트랜잭션 관리를 위한 미들웨어 제품 필요
:
Posted by Elick
2011. 1. 20. 17:37

Oracle Memory Work/ORACLE2011. 1. 20. 17:37

Oracle Server = Instance + Database
. Instance = Memory(SGA) + Backgroud Processes
. 오라클 데이터 베이스를 접속하는 문이다.
. 항상 하나의 데이터 베이스만을 open한다. (database는 여러개의 인스턴스가 가능 = RAC)
. instance에 의해 database는 mount(메모리를 할당 받은 상태)된다.
. SGA
 = Shared Pool + DB buffer Cache + Redo Log Buffer
. Backgroud Processes 
= PMON + SMON + SNPn + LCKn + REDO + Dnnn + Pnnn + CKPT + ARCH + LGWR + DBWR
 
. Database
. data files : meta data(data dictionary), user data
. control files : 오라클의 구조 정보 (동기화 정보, 물리적 그조)를 control하는 파일
. redo log files : 데이터가 변경된 레코드 저장

흐름
User Process -> Server Process -> PGA -> SGA -> Database -> User Process
. User Process : client에서 실행되며, sqlplus, developer/2000등의 application을 실행했을 때 생성
. Server Process
. user process의 요구를 받아 결과 값을 client에게 return한다.
. 각각의 user process마다 server process가 하나씩 생긴다.(1:1관계)
. 하나의 server process는 하나의 PGA를 생성한다.

User Process
. 사용자가 오라클 Application Program을 실행 시켰을 때 사용되는 프로세스이다. (sql*plus, Forms, Pro*C 등이 해당)
. 사용자가 오라클 서버에 접속할 때마다 사용자 프로세스가 생성된다.
. 사용자가 실행시킨 SQL문을 서버 프로세스에 전달하고, 그 결과를 서버 프로세스로부터 받아 수행한다.

Server Process
. Server Prorcess  정의
. Server에서 실행된다.
. 오라클은 서버프로세스를 생성하여 접속된 사용자 프로세스의 요구사항(SQL문)을 처리한다.
. 전용 서버 구성에서는 단일 사용자 프로세스에 대한 요구사항을 처리하며, 공유 서버 구성일 때는 여러 사용자 프로세스가 적은 수의 서버 프로세스를 공유하여 서버 프로세스 수를 최소화하는 동시에 사용 가능한 시스템 자우너 활용도를 최대화 한다.
 
. Server Process의 역할
전달받은  SQL문을 Parse, 실행(Execute), 패치(Fetch) 작업을 통행 실행시킨다.
. Parse
SQL문 문법 검사
사용자 인증 및 권한 검사
객체의 사용 가능 여부 검사
. Execute
parse과정에서 만들어진 parse tree로 원하는 데이터를 찾음
데이터를 찾은 후 실제 데이터 read 수행
필요할 경우 데이터 수정
. Fetch
데이터를 사용자 프로세스에게 전달
 
PGA
. PGA 정의
. 데이터베이스에 접속하는 유저에게 할당되는 각각의 서버 프로세스가 독자적으로 사용하는 오라클 메모리 영역.
. PGA는 프로세스가 생성될 때 할당되면 프로세스가 종료될 때 해제.
. 각각의 server process마다 하나의 PGA를 생성.
 
. PGA의 구조
정렬공간 (Sort Area)
 + 세션정보 (Session Information)
 + 커서 상태 정보 (Cursor State)
 + 변수 저장 공간 (Stack Space) 

. 정렬공간 : order by 또는 group by등의 정렬을 수행하기 위한 공간
. 세션정보 : 서버 프로세스에 의해 추출된 결과 값을 전달하기 위해 필요한 유저 프로세스의 세션정보 저장
. 커서상태정보 : 해당 SQL의 파싱 정보가 저장되어 있는 주소 저장
. 변수저장공간 : SQL문장에 바인드변수를 사용할 경우 해당 바인드 변수를 저장하는 공간
. UGA = 정렬공간 + 세션정보 + 커서상태정보

. PGA share and dedicated
전용 Server : PGA(Stack Area + Session Information) + SGA()
공유 Server : PGA(Stack Area) + SGA (Session Information)

. dedicated : PGA에 Stack과 UGA가 위치한다.
. share : PGA에 Stack만 올라가고, UGA는 SGA에 위치하는데, UGA가 SGA에 상주하면 share pool의 공간이 좁아지므로 실질적으로 UGA는 large pool에서 돌아간다.
 
. PGA 관리
세개의 파라메터로 PGA의 크기를 관리할 수 있다.

. WORKAREA_SIZE_POLICY
MANUAL로 설정할 경우 : SORT_AREA_SIZE  파라메터를 이용하여 정렬공간을 설정한다.
AUTO로 설정할 경우 : PGA_AGGREGATE_TARGET 파라메터를 이용하여 PGA의 크기를 설정한다.

. SORT_AREA_SIZE : PGA에서의 sort는 기본적으로 memory sort인데, PGA의 sort공간이 부족하여 디스크의 temporary공간에서 sort하는 것을 disk sort라 하는데 이는, I/O발생이 빈번하여 속도가 저하되므로, MENUAL로 설정하여 직접 sort size의 크기를 늘려 I/O발생이 빈번하지 않도록 설정한다.

. PGA_AGGREGATE_TARGET : 모든 세션의 PGA 크기의 합을 설정하는 파라메터이다. (user 한명의 PGA가 아닌 모든 user의 PGA크기를 관리!!)
 
. PGA의 크기 확인
SELECT addr, username, pga_used_mem, pga_alloc_mem, pga_max_mem FROM v$process
. PGA_USERD_MEM:프로세스가 현재 사용하는 PGA의 크기
. PGA_ALLOC_MEM: 프로세스에 할당된 PGA의 크기 (사용 완료 후 시스템 메모리에 반환하지 않는 메모리 포함)
. PGA_MAX_MEM:프로세스가 사용한 최대 PGA의 크기

:
Posted by Elick
2011. 1. 17. 18:09

MAME Work/Etc2011. 1. 17. 18:09

Overview
MAME(Multiple Arcade Machine Emulator, 다중 아케이드 기계 에뮬레이터)는 아케이드 게임 에뮬레이터로써 아케이드 게임 시스템의 하드웨어를 소프트웨어로 구현하고 있다.  이는 고전게임을 보존하자는 의도에서 시작된 프로젝트이다. 한국에서는 MAME를 “마메”라고 잘못 표기하는 경우가 있으나, 영어로 MAME 프로젝트의 발음을 (pronounced 'Maim' in English)라고 공식적으로 밝히고 있는 것과 같이 한국어의 표기로는 “마임”이라고 읽고 표기해야 한다. 한국에서는 온라인을 통해 공식적으로 PC통신인 나우누리의 PGF(순수 게임 사랑) 동호회를 통해 처음 소개되었고, 이후 PGF(순수 게임 사랑) 동호회 내의 ELF(Emul Love Forum)을 통해 널리 알려지게 되었다.

1997년 2월 5일, 니콜라 살모리아(Nicola Salmoria)가 최초의 MAME를 공개했으며 버전은 0.1이었다. 
2009년 6월 8일 현재 버전은 0.132로 4191개의 게임과 8099개의 롬 이미지를 지원하며, 지원되는 게임은 계속 늘어나고 있다. 
그러나 배포된 모든 롬이 실행 가능한 것은 아니다. 가령 0.131 버전에서는 1141개의 롬이 동작하지 않는 것으로 나오며, 45개는 게임이 아닌 BIOS롬이다. 이 프로젝트는 현재 아론 길레스(Aaron Giles)가 지휘하고 있다.

법적인 문제
에뮬레이터를 제작하고 배포하는 것은 원칙적으로 가능하다. 몇몇 회사(가령 소니)들이 이를 금지하고 소송을 걸려고 노력하였으나, 궁극적으로는 실패했다. 그러나 게임 이미지, 즉 게임 롬 파일을 배포하는 것은 문제가 있을 수 있다. 게임들이 제작되고 판매된지 시간이 지났고, 지금은 게임센터에서 찾을 수 없는 게임이거나 판매되지 않는 게임이라 할지라도 저작권이 소멸하지 않은 경우가 많다. 몇몇 게임 회사는 시간이 지난 게임 롬 파일을 비상업적인 용도에 한정하여 공개하는 경우도 있고 이 경우에는 MAME 프로젝트 홈페이지에서 직접 다운받을 수도 있다.

MAME 라이센스
MAME는 소스코드까지 포함해 무료로 제공되고 있지만, 상업적 사용과 재배포는 제한되어 있어서 자유 소프트웨어는 아니다.  즉, 공개 소스 정의의 조건을 만족하지 않고 있으며, 자유 소프트웨어 재단에서 정의한 "자유 소프트웨어"에도 맞지 않는다. 사실, MAME는 수정되었든 수정되지 않았든, 소스 형식이든 바이너리 형식이든 상관없이 배포가 가능하다.  단, 재배포판을 팔아서는 안되고 상업적인 상품이나 활동에 포함되어서도 안된다.

사용법
MamePlus, MamePlusPlus 등등 어떠한 형태로든 Emulator의 압축을 해제하고 바로 실행하면 된다.
네트워크 게임을 위해서는 카일레라 라는 서버 프로그램을 설치하여 구동하면 된다.
역시 설치 및 구동은 복사->압축해제 이다.
kailleraclient.dll, kaillerasrv.exe, kaillerasrv.conf 등을 적절한 경로에 복사한 후 Emulator console에서 [Start kaillera Server] 를 선택하기만 하면 된다.
kaillerasrv.conf 역시 적절히 편집해 주어야 한다.
적절한 경로의 예)
{MameHome}\kailleraclient.dll
{MameHome}\kaillera\kaillerasrv.exe
{MameHome}\kaillera\kaillerasrv.conf

kaillerasrv.conf 를 열어보면 편집을 어떻게 해야 하는지 잘 설명되어 있다.

자세한 설치 및 구동은 Internet에 널리고 널렸으므로 생략한다.

Reference
Mame Project : http://mamedev.org/
정리가 잘되어 있는 한국 개인 Blog : http://mamegame.tistory.com/102
:
Posted by Elick