Дамп базы данных сообщений форума Sql.ru Год/Дата Выпуска: 2022 Версия: 1 Build 0 Разработчик: Murcode Сайт разработчика: murcode.ru Разрядность: 32bit, 64bit Язык интерфейса: Русский Таблэтка: не требуется Системные требования: Любая ОС Описание: Для проекта MurCode была подготовлена база данных сообщений, которую собирали пользователи форума ранее существовавшего Sql.Ru более 20 лет. * Дамп не является точной копией дампа движка оригинального форума. Значимые таблицы с данными: Forum, Topic, Message. * Таблица Users получена путём агрегации выборки * Таблицы %FTS% являются службными для полнотекстового поиска версии FTS5. При необходимости они могут быть удалены, удалив соответствующую виртуальную таблицу. Схема базы данных, индексов и запросы для обновления FTS
скрытый текст
CREATE TABLE Forum (id integer PRIMARY KEY ASC, forum_name text, group_name text); CREATE TABLE Topic( id integer PRIMARY KEY ASC, forum_id integer, topic_name text, user_name text, user_id integer); CREATE TABLE Message( id integer PRIMARY KEY ASC, topic_id integer, date_created datetime, user_name text, user_id integer, message_text text); CREATE UNIQUE INDEX idx_topic_fid_id ON Topic( forum_id, id); CREATE INDEX idx_message_tid ON Message(topic_id); CREATE INDEX idx_message_tid_date_created ON Message( topic_id, date_created); -- Временно в качестве Primary CREATE UNIQUE INDEX idx_forum_id ON Forum(id); CREATE UNIQUE INDEX idx_topic_id ON Topic(id); CREATE UNIQUE INDEX idx_message_id ON Message(id); -- Для сообщений -- Настройка FTS5, создаём таблицу. Т.к. создаётся content-таблица, то это экономит место, в FTS таблицу не добавляется дубликат контента, а только лишь добавляется индекс в приватную таблицу. -- Но нужные триггеры, которые будут удалять из приватной таблицы индексы CREATE VIRTUAL TABLE MessageFts USING fts5( content='message', content_rowid='id', id UNINDEXED, message_text, user_name ); -- Добавляем триггеры для обновления индекса CREATE TRIGGER tr_message_after_insert AFTER INSERT ON Message BEGIN INSERT INTO MessageFts(rowid, id, message_text, user_name) VALUES (new.id, new.id, new.message_text, new.user_name); END; CREATE TRIGGER tr_message_after_delete AFTER DELETE ON Message BEGIN INSERT INTO MessageFts(MessageFts, rowid, id, message_text, user_name) VALUES ('delete', old.id, old.id, old.message_text, old.user_name); END; CREATE TRIGGER tr_message_after_update AFTER UPDATE ON Message BEGIN INSERT INTO MessageFts(MessageFts, rowid, id, message_text, user_name) VALUES ('delete', old.id, old.id, old.message_text, old.user_name); INSERT INTO MessageFts(rowid, id, message_text, user_name) VALUES (new.id, new.id, new.message_text, new.user_name); END; -- Для топиков CREATE VIRTUAL TABLE TopicFts USING fts5( content='topic', content_rowid='id', id UNINDEXED, topic_name, user_name ); -- Добавляем триггеры для обновления индекса CREATE TRIGGER tr_topic_after_insert AFTER INSERT ON Topic BEGIN INSERT INTO TopicFts(rowid, id, topic_name, user_name) VALUES (new.id, new.id, new.topic_name, new.user_name); END; CREATE TRIGGER tr_topic_after_delete AFTER DELETE ON Topic BEGIN INSERT INTO TopicFts(TopicFts, rowid, id, topic_name, user_name) VALUES ('delete', old.id, old.id, old.topic_name, old.user_name); END; CREATE TRIGGER tr_topic_after_update AFTER UPDATE ON Topic BEGIN INSERT INTO TopicFts(TopicFts, rowid, id, topic_name, user_name) VALUES ('delete', old.id, old.id, old.topic_name, old.user_name); INSERT INTO TopicFts(rowid, id, topic_name, user_name) VALUES (new.id, new.id, new.topic_name, new.user_name); END; -- Обновляем индексы по существующим строкам INSERT INTO MessageFts(MessageFts) VALUES('rebuild'); -- Проверить индекс, согласовывает содержимое с внешней таблицей (запрос с rank=1) INSERT INTO MessageFts(MessageFts) VALUES('integrity-check'); INSERT INTO MessageFts(MessageFts, rank) VALUES('integrity-check', 0); INSERT INTO MessageFts(MessageFts, rank) VALUES('integrity-check', 1); -- Автослияние B-индексов в единой дерево. 8 - значение если редки обновления и удаления, 2 - если частые INSERT INTO MessageFts(MessageFts, rank) VALUES('automerge', 8); INSERT INTO TopicFts(TopicFts, rank) VALUES('automerge', 8);
Доп. информация: Для работы требуется наличие любого клиента для СУБД SQLite v3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum