데이터베이스에 채팅 메시지를 저장하는 가장 좋은 방법은 무엇입니까?
나는 채팅 앱을 만들고 있으며 채팅 대화에서 보낸 모든 메시지에 대한 전체 기록을 원합니다. 지금은 '메시지'라는 테이블에 각 메시지를 단일 행으로 저장하고 있습니다. 'Hi'와 같은 작은 메시지도 자체 데이터베이스 레코드를 가지므로이 테이블이 커질 수 있다는 것을 알고 있습니다.
누구든지 더 확장 가능한 mysql 솔루션을 추천 할 수 있습니까? 개별 메시지를 검색, 편집 또는 삭제할 필요가 없습니다. 전체 대화를 하나의 거대한 필드에 저장할 수 있습니까?
당신의 아이디어를 듣고 싶습니다!
데이터베이스에 전체 히스토리를 저장하는 데 아무런 문제가 없습니다. 그들은 그런 종류의 작업을 위해 준비되어 있습니다.
사실 당신은 스택 오버플로 여기에 채팅에 대한 예제 스키마에 대한 링크를 찾을 수 있습니다 : 예를
그래도 크기가 걱정된다면 그룹 메시지에 몇 가지 최적화를 적용 할 수 있습니다 (예 : 1 분 정도). 이렇게하면 한 줄 메시지 만 피할 수 있습니다.
단일 파일에 대한 동시 쓰기의 필요성을 피할 수 있다면 채팅 메시지를 저장하는 데 데이터베이스가 필요하지 않은 것 같습니다.
대화를 텍스트 파일에 추가하기 만하면됩니다 (사용자 \ 대화 당 파일 1 개). 디렉토리 / 파일 구조가 있습니다.
다음은 파일 구조의 단순화 된보기입니다.
chat-1-bob.txt
201101011029, hi
201101011030, fine thanks.
chat-1-jen.txt
201101011030, how are you?
201101011035, have you spoken to bill recently?
chat-2-bob.txt
201101021200, hi
201101021222, about 12:22
chat-2-bill.txt
201101021201, Hey Bob,
201101021203, what time do you call this?
그런 다음 사용자 ID, 대화 ID (guid?) 및 파일 이름에 대한 참조 만 저장하면됩니다.
더 간단한 확장 가능한 솔루션을 얻는 것이 어려울 것이라고 생각합니다.
LOAD_FILE
데이터를 가져 오는 데 사용할 수도 있습니다 . http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
대화를 다시 작성해야하는 경우 파일을 병합하고 정렬 할 수 있도록 전송 된 채팅 메시지 (파일에)와 함께 값 (날짜 시간)을 입력해야하지만이 시점에서는 아마도 좋은 생각 일 것입니다 데이터베이스 사용을 고려하십시오.
이러한 대화의 모든 메시지를 포함하는 x 대화에 대한 데이터베이스를 만들 수 있습니다. 이렇게하면 x가 초과 될 때마다 새 데이터베이스 (또는 서버)를 추가 할 수 있습니다. X는 인프라가 지원하는 대화 수입니다 (하드웨어에 따라 다름).
문제는 여전히 동일한 데이터베이스에 큰 대화 (많은 메시지 포함)가있을 수 있다는 것입니다. 예를 들어 데이터베이스 A와 데이터베이스 B가 있으며 각각 1000 개의 대화를 저장합니다. 서버 B보다 서버 A에 훨씬 더 많은 "큰"대화가있을 수 있습니다 (사용자가 만든 콘텐츠이므로). 데이터베이스 / 서버에서 단일 대화를 찾을 수있는 조회를 포함하는 "마스터"데이터베이스를 추가 할 수 있습니다 (또는 해시 / 모듈로 등에서 데이터베이스를 할당하는 스키마가 있음).
동일한 문제를 처리하고 (첫 번째가 아닐 수도 있음) 이미 해결 된 실제 아키텍처를 찾을 수 있습니다.
참고 URL : https://stackoverflow.com/questions/7063051/best-way-to-store-chat-messages-in-a-database
'IT박스' 카테고리의 다른 글
오버레이를위한 FrameLayout 대 RelativeLayout (0) | 2020.12.13 |
---|---|
Javascript ES6 계산 / 시간 복잡성 (0) | 2020.12.13 |
AngularJS : ng-click이 "좋은 방법"입니까? (0) | 2020.12.13 |
ajax 콜백 끝에서 .bind (this)의 목적은 무엇입니까? (0) | 2020.12.13 |
Docker는 컨텍스트 외부에서 심볼릭 링크를 따릅니다. (0) | 2020.12.13 |