Файл TXT или база данных?

Что я должен использовать в этом случае (Apache + PHP)? База данных или просто файл TXT? Мой приоритет № 1 является скоростью.

Операции

  • Добавление новых объектов
  • Чтение объектов
  • Максимум 1 000 записи

Спасибо.

База данных (MySQL)

+----------+-----+
| Name     | Age |
+----------+-----+
| Joshua   | 32  |
| Thomas   | 21  |
| James    | 34  |
| Daniel   | 12  |
+----------+-----+

Файл TXT

Joshua 32
Thomas 21
James 34
Daniel 12
8
задан Ruth Rettigo 23 May 2010 в 22:10
поделиться

11 ответов

Вы изучали другие DHT?

Project Voldemort

Memcached + MySQL

Обновление 1

Если у вас нет memcached и Voldemort на ваших серверах, вы можете использовать встроенный ключ-значение такие базы данных, как BDB

2
ответ дан 5 December 2019 в 12:08
поделиться

Как некоторые говорили выше, у этой проблемы есть альтернативы. Мощь базы данных может быть полезной (в конце концов, вы не хотите самостоятельно кодировать эти функции, когда можете делать что-то еще), но вы не хотите переусердствовать.

SQLite, возможно, заслуживает внимания, поскольку его можно рассматривать как файл (не о сервере, о котором следует беспокоиться), но он дает вам возможность выполнять запросы SQL.

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

0
ответ дан 5 December 2019 в 12:08
поделиться

SQLite. Небольшая быстрая база данных. http://www.sqlite.org/

Интегрирован с установками PHP в наши дни. http://php.net/manual/en/book.sqlite.php

Предоставляет вам варианты:

И если вам действительно нужна скорость, рассмотрите nginx с fast-cgi php.

0
ответ дан 5 December 2019 в 12:08
поделиться

С максимумом 1000 записей, содержащих только столбцы имени и возраста, я сомневаюсь, что есть какая-либо значительная разница в скорости между вашими вариантами; вероятно, другие факторы, такие как нагрузка на сервер, будут определять вашу скорость.

Для легкого и надежного доступа MySQL может быть немного проще, но с текстовым файлом вам не нужно настраивать сервер MySQL.

У меня такое чувство, что у нас недостаточно информации, чтобы дать вам обоснованный ответ.

0
ответ дан 5 December 2019 в 12:08
поделиться

Для скорости и оптимизации использования памяти я бы выбрал базу данных. Один только индекс на столбце имени, вероятно, увеличит производительность так, как никогда не удастся достичь с текстовым файлом.

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

7
ответ дан 5 December 2019 в 12:08
поделиться

Если скорость действительно единственное, что важно, я мог бы предложить использовать var_export для создания файла .php, который может быть загружен с помощью PHP. Пока число операций чтения и записи достаточно велико, и если установлен APC , файл PHP сможет использовать кэш опкодов APC. Это будет намного быстрее, чем НИЧЕГО, потому что данные будут загружены изначально как PHP, вместо того, чтобы проходить через промежуточный уровень (memcache, mysql и т. Д.).

0
ответ дан 5 December 2019 в 12:08
поделиться

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

  • Выбрать всех клиентов, возраст которых больше или равен 18
  • Получить количество проданных вами продуктов
  • Получить общий доход от проданных продуктов
  • Получите среднюю цену всех ваших продуктов
  • Получите список клиентов, которые живут в определенном районе

... и многое, многое другое, с помощью простых операторов SQL. Попытка кодировать все это для текстового файла была бы контрпродуктивной и менее гибкой. С базой данных вы получаете все это бесплатно.

0
ответ дан 5 December 2019 в 12:08
поделиться

Это очень рискованно, но вы можете динамически генерировать PHP-файл. Если вы будете в основном читать из этого файла, то это будет самый быстрый метод для небольших записей с ограничением в 1000.

0
ответ дан 5 December 2019 в 12:08
поделиться

Предлагаемый текстовый файл по сути является базой данных. Самостоятельное написание операций для управления им - это просто изобретение велосипеда, поэтому просто используйте то, что уже существует. 1000 записей - это довольно маленький масштаб, поэтому можно использовать что-то простое, например SQLite.

3
ответ дан 5 December 2019 в 12:08
поделиться

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

Существуют классы и готовые скрипты, которые позволяют хранить такие данные в текстовых файлах, но в конечном итоге именно для этого и были созданы базы данных, поэтому я бы использовал одну из них.

1
ответ дан 5 December 2019 в 12:08
поделиться

Просто сохраните его в памяти, если есть только 1000 записей.

1
ответ дан 5 December 2019 в 12:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: