Wir haben hohe Verkehrs Nachrichten - Websites, ich möchte eine Funktion hinzuzufügen , dass jeder Benutzer über alle Inhalte der Website durchsuchen können, wie news, polls, comments, galleriesusw. Jeder Inhaltstyp hat seine eigenen Tabellen.
Ich habe beschlossen, eine Tabelle zu erstellen, die alle Inhalte aller Typen enthält:
CREATE TABLE full_text_search
(
master_id INT NOT NULL,
content_text TEXT NOT NULL,
PRIMARY KEY ( master_id )
);
Ich generiere eine eindeutige Nummer master_idfür jeden Inhalt aller Art, um jeden content_textin der full_text_searchTabelle zu identifizieren .
zum Beispiel:
News table:
+----+-------------+---------+---------+----------+------------+
| id | news_title | lead | subtitle| content | master_id |
+----+-------------+---------+---------+----------+------------+
| 1 | sometitle |some lead| subtitle|content 1 | 3 |
| 2 | some title |some lead| subtitle|content 2 | 5 |
+----+-------------+---------+---------+----------+------------+
article table:
+----+-------------+---------+------------------+---------+------------+
| id | title | author | short description| content | master_id |
+----+-------------+---------+------------------+---------+------------+
| 1 | sometitle | someone | very short desc |content1 | 1 |
| 2 | some title | otherone| some short desc |content2 | 4 |
+----+-------------+---------+------------------+---------+------------+
Wie Sie sehen können, master_idist zwischen den obigen Tabellen eindeutig. Wann immer ein neuer Inhalt von jedem Typ eingefügt wird, sollte ich INSERTihn auch in die full_text_searchTabelle einfügen .
FRAGEN
- Ist es für viele Beilagen pro Tag (ca. 3000 von allen Typen) eine gute Lösung oder ein Anti-Pattern?
- Ist es eine bessere Wahl, wenn ich diese Tabelle von meinen anderen Tabellen trenne und sie in eine andere Datenbank wie andere RDBMS oder NoSQLs lege?
- Irgendwelche anderen Lösungen?
full_text_searchWie identifizieren Sie mit der Tabelle das richtige Ergebnis mit dem richtigen Typ und der richtigen ID?