Короткая история: я загрузил загрузчик java / flash, и один из файлов был .db. После некоторых исследований я обнаружил, что это база данных. Что и вызвало вопрос. Могу ли я создать файл базы данных (.db) и сохранить его в папке в корневом каталоге, вместо того чтобы полагаться на другой сервер и запросы SQL? Тем самым теоретически ускоряется мой сайт за счет доступа только к локальным файлам.

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

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

Спасибо за вашу помощь.

0
Chaky31 22 Янв 2013 в 22:54

6 ответов

Лучший ответ

[Хорошая часть] Теоретически, да, вы можете сделать это. Одним из примеров будет база данных sqlite. Эта база данных представляет собой отдельный файл, который вы храните в любом месте. Если вы пишете код на PHP, вам необходимо установить соответствующее расширение вместе с вашим PHP, чтобы получить доступ к этой базе данных или запросить ее.

[Плохая часть ] Это имеет смысл, только если вы имеете дело с небольшими объемами данных и ваши запросы относительно просты. Базы данных Sqlite работают медленно и поддерживают только ограниченный набор SQL-операций. Они также не поддерживают многие стандартные типы данных и не имеют большого количества встроенных функций, на которые вы можете положиться. Базы данных Sqlite очень хороши, если вам нужна простая поддержка БД в автономном приложении (например, в мобильном приложении с локальными данными), но не очень хороши для хранения больших объемов транзакционных данных.

[Приговор] Если вы хотите ускорить работу вашего веб-приложения, переход с правильной базы данных на sqlite, скорее всего, только помешает вашему приложению, но не поможет.

2
Aleks G 22 Янв 2013 в 19:01

Похоже, вы просто запускаете сервер на том же компьютере, где находится клиент. Это конечно возможно.

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

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

0
Marlin Pierce 22 Янв 2013 в 19:18

SQLlite может предоставить базу данных, которая работает без использования сервера. Он предоставляет стандартный интерфейс SQL, который вы используете с обычным SQL-сервером (MySQL и т. Д.). Вероятно, он не будет быстрее, так как будет полагаться на гораздо больший дисковый ввод-вывод, чем стандартный сервер баз данных.

1
datasage 22 Янв 2013 в 18:57

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

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

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

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

0
Mike Brant 22 Янв 2013 в 19:04

SQlite не имеет сервера. Это хорошо задокументировано. PHP также имеет расширение для работы с ним. Но если вы действительно хотите ускорить процесс, посмотрите на memcached, redis, MongoDB и другие.

0
uKolka 22 Янв 2013 в 19:04

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

http://www.databasedev.co.uk/flatfile-vs-rdbms.html

0
DrCorduroy 22 Янв 2013 в 18:59