소셜네트워크게임(이하 SNG) DB로 적당한 것은 무엇인가요?
글쓴이: ipes4579 / 작성시간: 일, 2011/02/06 - 6:10오후
플렉스로 상용 SNG를 준비하고 있습니다.
서버는 SmartFoxServer2X 를 사용하기로 결정했고, OS는 차차 결정하기로 했습니다.
SmartFoxServer2X 의 경우 유저수를 Unlimited 로 해서 구입하면 3500유로(대략 5백만원? http://www.smartfoxserver.com/2X/buy.php) 입니다.
가난한 대학생 3명이 만드는 게임이라 자본은 건강한 육체와 시간입니다. 500만원이면 대략 78일정도 노가다 뛰면 되겠군요.. 흠흠.
게임 내용은 이곳에 상세히 기재할 수 없는 점 양해 바랍니다. DBMS 조건으로는
1. 대규모의 트랜젝션을 처리할 수 있어야 합니다(하지만 트랜잭션의 길이는 매우 짧을 것입니다)
2. 처리 속도는 빨라야 합니다.
3. 비용이 적게 들어야 합니다. (없으면 더 좋습니다.. 우리는 가난한 대학생 흑흑)
검색해보니
cubrid, mysql, postgreSQL, firebird
정도가 좋은 것 같습니다. 이 중 free인 postgreSQL, firebird 가 마음에는 확 꽂힙니다. 하지만 여기서 mysql말고는 사용해보지 못해서 더 많은 정보가 필요합니다.
선택에 결정적인 조언을 해주시는 분께는 추후 게임 이용하실 때 아이템을 선물로 드리겠습니다.
조언 부탁드립니다!
Forums:
싸이월드 1위 소셜게임은 NoSQL을 쓴다고
싸이월드 1위 소셜게임은 NoSQL을 쓴다고 하더군요.
재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전
http://blog.aaidee.com
귀태닷컴
http://www.gwitae.com
NoSQL 이라. 대충 검색해보니 꽤 어렵네요.
NoSQL 이라. 대충 검색해보니 꽤 어렵네요.
역시 공부할 것은 산더미..
정확히 말씀드려서, MySQL도 같이 쓴다고 했던
정확히 말씀드려서, MySQL도 같이 쓴다고 했던 걸로 기억합니다.
보통 때는 적당히 굴러가다가 포털 메인에 링크되면 감당을 못해서 손해를 본다고 합니다.
재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전
http://blog.aaidee.com
귀태닷컴
http://www.gwitae.com
RDBMS + NoSQL이 괜찮겠네요. 그런데
RDBMS + NoSQL이 괜찮겠네요.
그런데 RDBMS를 MySQL로 결정하기도 라이센스 문제가 좀 애매하네요.
가격좀 확실하게 오픈해주면 좋으련만 -_-
점점 MySQL이 비호감이 되는 것 같아 fgsql이나 firebird 중에 선택해야겠습니다...
mysql이 가장 무난한 것 같네요.
mysql이 가장 무난한 것 같네요. postgresql은 기능이 많고 안정성 면에서 믿을만 합니다.
mysql을 사용하실 수 있다니 사용하기 편하신 것을 쓰는게 좋다고 생각합니다.
잘 모르는 DB로 서비스를 했다가 유사시에 트러블슈팅이 늦어지면 게임같은 서비스에서는 치명적이라 생각되네요.
Replication을 하시면 좀 더 안전하게 서비스 하실 수 있구요.
table sharding이나 DB를 분산 시키면 mysql이라도 대규모 서비스에 아무 지장이 없습니다.
쿼리가 빈번하게 발생하는 부분을 memcached로 케슁을 하시면 엄청난 속도 향상을 얻으실 수 있을겁니다.
성공하시길 바랍니다.
답변 감사합니다 ^^ mysql이 사용하기도 가장
답변 감사합니다 ^^
mysql이 사용하기도 가장 편하고 무난하긴 한데 아무래도 라이센스가 좀 걸립니다.
확실하게 가격 정책을 제시해주기라도 하면 좋을텐데
아무래도 라이센스 가격은 숨기고, 예전에 완전 free 했던 시절 이미지로 먹고 사는 것 같아 좀 꺼려집니다..
pgsql 더 알아봐야겠네요. 감사합니다.
단일 DB만 쓰는 경우는 별로 없을것 같습니다.
소셜 네트웍의 특징중의 하나가 베베꼬인 "관계(네트워크)" 때문에 데이터량이 폭증한다는 점입니다. 그것도 순간적인 데이터가 아니라, 지속적으로 쌓고 관리해야 하는 데이터입니다.
따라서 단일 DB로는 관리가 불가능한게 보통입니다(가능 하다면 대부분 ... 망했다고 봐야하거나 관계 정보를 저정하지 않는다고 봐야겠죠).
어쨌든 만들려는 게임의 데이터 특성을 고려하는게 최우선입니다.
1. 데이터가 계속 쌓이고 그것을 지우지 못하고 계속 보여줘야 하는 구조인가?
2. 데이터 양이 정해져 있고, 폭증하지 않고, 기존 데이터를 업데이트하는 구조인가?
2번의 경우에는 mysql 졍도를 단일 서버로 사용하고 읽기 replication을 하는 기존 수준에서 하면됩니다.
문제는 1번이죠. 트위터, 페이스북 같은 서비스들이 모두 1번입니다.
트위터에서는 엄청난 관계가 형성되고 "더 보기" 버튼을 누르면 과거 오래전의 데이터까지 자연스럽게 보이죠.
1번의 문제를 해결하는 방법은 고전적인 것으로 일반 RDBMS 의 샤딩(Sharding)이 있습니다. 샤딩이란 여러대의 RDBMS(여기서는 mysql 정도)를 붙여서 1번 데이터는 1번 데이터베이스에서 2번 데이터는 2번 데이터베이스에서 읽고/쓰는 형식입니다. 자세한것은 검색.
가장 잘 알려진 방법이고, 검증된 방법이지만 프로그래밍 로직 구성할 때 머리 깨집니다. 데이터베이스를 안 깨뜨리기 위해 철저한 코드 검증이 필요하고, 그에 따라 프로그래밍 코드의 양이 폭발적으로 증가하며, DB가 하나 더 붙을 때마다 삽질도 장난이 아닙니다.
또 다른 방법이 요즘 뜨는 NoSQL 솔루션을 쓰는 것인데, Cassandra, MongoDB, Hbase 등이 유명합니다(대부분 오픈소스). 이 방식은 용량이 차면 서버를 한 대 그냥 추가해서 연결만 해주면 자동으로 마치 단일 서버에 HDD 용량 큰거 붙인거 같은 효과가 발생한다는 것입니다. 매우 관리가 쉽고, 코딩량도 확 줄어듭니다.
이것은 사실상 무제한 용량을 가진 단일 데이터베이스를 쓰는 것과 비슷합니다. 그렇다고 NoSQL만 단독으로 쓰는 경우는 거의 없을 것입니다. 중요하고 인덱싱에서 사용하는 데이터(보통은 계정정보?)는 모두 기존 RDBMS에 저장하고, 대용량의 무한 증가 데이터만 NoSQL에 저장하는게 보통일 것 입니다.
NoSQL이라고 해서 다 만능은 당연히 아닙니다. 데이터 구조가 단순화 되지 않으면 힘든 경향이 있습니다.....만... 제가 경험이 일천해서 확실히 장단점을 논할 정도는 못되구요.
님의 상황이 1번인지 2번인지 판단하세요.
그리고 NoSQL 솔루션들이 아직 제대로 검증된 적이 별로 없이, 소문만 무성한 상태라는 것도 (그러나... 이건 시간이 해결해 주겠죠?) 중요합니다.
게임 개발에 필요한 로직을 충분히 NoSQL이 담아낼 수 있는지(RDBMS야 이미 검증이 완료됐으니..), 성능 문제도 감당할 만한지 충분히 검토해야 합니다.
확신이 없으면 그냥 MySQL쓰세요.. 그리고 나중에 정말로 게임이 인기를 끌어서 폭증하는 데이터량을 감당할 수 없다생각되면 그때 NoSQL을 검토해도 될것입니다.
트위터는 아직도 MySQL기반으로 알고 있습니다. 카산드라 도입하려고 하다가 취소했죠.
http://kwon37xi.egloos.com
자세한 정보 감사합니다! 뿌옇던 것이 어느정도
자세한 정보 감사합니다!
뿌옇던 것이 어느정도 걷히는 느낌입니다.
1번인지 2번인지에 대해선 아직 확신이 없네요.
'아이템을 거래할 경우, 그 거래 내역을 추적할 수 있도록 할 것인가?'
수준에서의 고민을 좀 해봐야겠군요.
다들 MySQL 사용하라 하시는데.. 아! 고민입니다 ㅠ postgreSQL 이나 firebird에 비해 MySQL이 많이 좋나요?
솔직히 말씀드리면 DBMS를 구분하실 필요는 없으실것
솔직히 말씀드리면 DBMS를 구분하실 필요는 없으실것 같습니다.
DBMS보다 business로직과 쿼리 등이 성능을 좌우하기 때문이지요.
제시하진 조건으로는 MySql을 추천합니다.
1. 대규모의 트랜젝션을 처리할 수 있어야 합니다(하지만 트랜잭션의 길이는 매우 짧을 것입니다)
-> MySql도 대규모 트랜잭션 처리에 문제없을 정도로 잘 성숙되어있습니다.
2. 처리 속도는 빨라야 합니다.
-> 각종 대형 어플리케이션에서도 쓸 만큼 괜찮은 속도를 보여줍니다.
3. 비용이 적게 들어야 합니다. (없으면 더 좋습니다.. 우리는 가난한 대학생 흑흑)
-> Olleh!
http://mr.hanul.co
댓글 달기