TXT файл или база данных? - PullRequest
8 голосов
/ 24 мая 2010

Что я должен использовать в этом случае (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

Ответы [ 11 ]

7 голосов
/ 24 мая 2010

Для скорости и оптимизированного использования памяти, я бы сказал, идти с базой данных вниз. Размещение индекса только для столбца имени, вероятно, повысит производительность так, как это невозможно с текстовым файлом.

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

3 голосов
/ 24 мая 2010

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

2 голосов
/ 24 мая 2010

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

Проект Волдеморт

Memcached + MySQL

Обновление 1

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

1 голос
/ 24 мая 2010

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

1 голос
/ 24 мая 2010

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

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

0 голосов
/ 24 мая 2010

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

0 голосов
/ 24 мая 2010

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

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

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

0 голосов
/ 24 мая 2010

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

Интеграция с PHP устанавливается в эти дни.http://php.net/manual/en/book.sqlite.php

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

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

0 голосов
/ 24 мая 2010

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

0 голосов
/ 24 мая 2010

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

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

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

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