MySQL против файловых баз данных - PullRequest
2 голосов
/ 31 января 2009

Итак, я собираюсь поработать над домашней блог-системой на PHP, и мне было интересно, какой способ хранения данных является самым быстрым. Я мог бы пойти в направлении MySQL, или я мог бы пойти своим собственным небольшим способом сделать это, храня всю информацию (закодированную в JSON) в файлах.

Каким способом будут самые быстрые файлы MySQL или JSON?

Ответы [ 8 ]

4 голосов
/ 31 января 2009

Для небольшой однопользовательской «базы данных» файловая система, скорее всего, будет быстрее - по мере роста размера и сложности сервер баз данных, такой как MySQL или SQL Server, будет непросто побороть.

2 голосов
/ 31 января 2009

Я бы определенно выбрал вариант БД (так как вам нужно иметь возможность искать и индексировать вещи). Но это не значит, что вам нужен полностью реализованный отдельный сервис БД.

MySQL определенно является более масштабируемым решением.
Но недостатком является то, что вам нужно настроить и поддерживать отдельный сервис.

С другой стороны, существуют БД, которые основаны на файлах и все же дают вам доступ со стандартными переходами SQL (SQLite SQLite.org). Вы получаете преимущества SQL, но вам не нужно поддерживать отдельный сервис. Недостатком является то, что они не так масштабируемы.

1 голос
/ 31 января 2009

Поскольку вы думаете, что вам может не потребоваться сложная реляционная структура, это может быть интересной возможностью попробовать что-то более среднее.

Извлечение CouchDB , это база данных на основе документов, без схемы (но все еще индексируемая). База данных состоит из документов, которые содержат именованные поля (пары «ключ-значение»).

Веселитесь ....

1 голос
/ 31 января 2009

Простите, если это не дает прямого ответа на ваш вопрос, но так как это домашняя система блогов, стоит ли тратить время на размышления о том, какой бэкэнд сейчас быстрее?

Вы не будете смотреть на 10 000 одновременно работающих пользователей с первого дня, не похоже, что в обозримом будущем потребуется масштабирование до какой-либо степени.

Почему бы просто не придерживаться MySQL как разумного, а не быстрого выбора? Если вы действительно хотите почувствовать, что вы спроектировали для скорости, возможно, используйте вместо этого sqlite.

1 голос
/ 31 января 2009

Я бы выбрал базу данных MySQL - просто потому, что им легче управлять.

JSON на самом деле не формат для хранения, он для отправки данных в JavaScripts. Если вы хотите хранить данные в файлах, посмотрите XML или Сериализованный PHP (который, я подозреваю, вам нужен, а не JSON).

0 голосов
/ 23 июня 2013

Это действительно круто. Это класс PHP, который управляет базой данных плоских файлов с запросами http://www.fsql.org/index.php

Для блогов я рекомендую кэшировать страницы, потому что блоги обычно имеют только статический контент. Таким образом, запросы запускаются только один раз при кэшировании. Вы можете обновить кэшированные страницы при добавлении нового сообщения в блоге.

0 голосов
/ 31 января 2009

Я сделал оба. Мне нравятся файлы для очень простых задач и базы данных для сложных задач.

Для файловых решений обратите внимание на следующие проблемы по мере увеличения количества файлов:

1) Используется гораздо больше дискового пространства, чем вы могли бы ожидать, потому что даже крошечные файлы занимают целый блок. Блоки довольно большие в файловых системах, которые поддерживают большие диски.

2) Большинство файловых систем работают очень медленно, когда количество файлов в каталоге становится очень большим. Мое решение этого (при условии, что имена файлов разумно распределены по алфавиту) состоит в создании каталога, состоящего из первых двух букв имени файла. Таким образом, файл "animal.txt" будет найден в / animal.txt. Это работает на удивление хорошо. Если ваши имена файлов не очень хорошо распределены по алфавиту, используйте какую-то функцию хеширования для создания каталогов. Звучит немного безумно, но это может работать очень и очень хорошо, и я использовал его для очень быстрых решений с десятками тысяч файлов.

Но файловые решения действительно подходят только иногда. Если у вас нет веских причин использовать файлы, используйте базу данных.

0 голосов
/ 31 января 2009

Хотя я не знаю наверняка, мне кажется, что база данных MySQL будет намного быстрее, особенно с увеличением объема данных.

Кроме того, использовать MySQL с PHP очень просто, особенно если вы используете класс абстракции, такой как ezSQL . ezSQL делает работу с базой данных действительно простой, и я думаю, что вы создадите больше ненужной работы для себя, если будете идти по домашнему пути JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...