Лучшая база данных для хранения html-файлов (или файлов в целом) - PullRequest
0 голосов
/ 09 августа 2011

Каков наилучший тип базы данных (ориентированный на документ, реляционный, ключ-значение и т. Д.) Для хранения html-файла (небольших размеров, ~ макс. 700 КБ) в базе данных?

В настоящее время я использую sqlite3 с python, но, похоже, он работает довольно медленно, если количество записей / файлов превышает 3000 (тогда .db-файл составляет около 260 МБ).Кроме того, sqlite не подходит для многопроцессорных сценариев.

Схема sqlite выглядит следующим образом:

CREATE TABLE articles (url TEXT NOT NULL,published DATETIME,title TEXT, fetched TEXT NOT
    NULL,section TEXT,PRIMARY KEY (url), FOREIGN KEY(url) references
    contents(url));
CREATE TABLE contents(url TEXT NOT NULL,date DATETIME,content TEXT,PRIMARY KEY (url));

CREATE TABLE shares (url TEXT NOT NULL, date DATETIME,likes INTEGER NOT NULL,
                    totals INTEGER NOT NULL,clicks INTEGER, comments INTEGER NOT                
                    NULL,share INTEGER NOT NULL, 
                    tweets INTEGER NOT NULL,PRIMARY KEY(date,url),FOREIGN KEY (url)       
                     REFERENCES articles(url));

И HTML-файлы переходят на содержимое

Ответы [ 2 ]

0 голосов
/ 10 августа 2011

so you think, sqlite should be scalable enough in general?

В реальном мире не существует "общего" сценария. Нет, я не думаю, что это будет хорошо масштабироваться для приложения, ориентированного на документы, где записи могут быть 500K. SQLite не оптимизирован для хорошего масштабирования в СЦЕНАРИИ ЗАНЯТОГО МНОГОКРАТНОГО СОПУТСТВУЮЩЕГО ЗАПИСИ, где «занят» - это многопараметрическая функция, включающая количество записей в секунду, размер записываемой записи и количество индексов в таблице. Короче говоря, чем более интенсивно на диске ( ergo отнимает много времени) операция записи, тем менее хорошо она масштабируется. Другими словами, чем больше запись и / или чем больше индексирована таблица, тем меньше может быть выполнено операций записи в секунду. И запись 500K действительно очень большая запись. Вы бы лучше обслужили MVCC.

0 голосов
/ 09 августа 2011

Для базы данных, ориентированной на документы, которая использует URL-адрес в качестве первичного ключа и которая также должна поддерживать несколько одновременно работающих писателей, вы можете рассмотреть возможность использования одной из баз данных noSQL поверх SQLite.В настоящее время в списке 122 из них здесь .

Что для вас значит "довольно медленно"?И вы уверены, что воспринимается медлительность @ базы данных?

...