Devo memorizzare le conversazioni di chat in uno schema di database. Il modo in cui userei questo database è che pubblico le chat su un sito web. Ogni chat non sarebbe più di circa 20 risposte. Qualcuno può suggerire uno schema per questo?Schema DB per le chat?
risposta
Ecco un inizio utilizzando MySQL Workbench
E la creazione di script di
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `chats` DEFAULT CHARACTER SET utf8 COLLATE default collation ;
-- -----------------------------------------------------
-- Table `chats`.`chat`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chats`.`chat` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `chats`.`chat_user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chats`.`chat_user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`handle` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `chats`.`chat_line`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `chats`.`chat_line` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`chat_id` INT UNSIGNED NOT NULL ,
`user_id` INT UNSIGNED NOT NULL ,
`line_text` TEXT NOT NULL ,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`) ,
INDEX `fk_chat_line_chat` (`chat_id` ASC) ,
INDEX `fk_chat_line_chat_user1` (`user_id` ASC) ,
CONSTRAINT `fk_chat_line_chat`
FOREIGN KEY (`chat_id`)
REFERENCES `chats`.`chat` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_chat_line_chat_user1`
FOREIGN KEY (`user_id`)
REFERENCES `chats`.`chat_user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
E siete liberi di scaricare il file MWB da my dropbox.
No, ho ancora un 404 sul link. –
Lines Conversazione has_may
Linea belongs_to utente, ha contenuto & tempo
Sembra così intensivo per DB. Pensi che se hai 10K di utenti che chattano ogni giorno, sarai inondato di dati entro un mese .. – Trip
30 giorni * 1440 minuti in un giorno * 200 caratteri al minuto (velocità media di battitura) * 10.000 utenti in chat = 85 gigabyte (approssimativamente) – thomasfedb
Ovviamente, questo presuppone che i tuoi utenti dedicano letteralmente 24 ore su 24 alla chat ... In ogni caso, 85 GB è probabilmente in grado di gestire la maggior parte dei database SQL, ma forse potresti prendere in considerazione l'eliminazione delle conversazioni più vecchie di 24 ore , ecc. – thomasfedb
chat anonime o utenti riconosciuti? –
chat anonime –