2012-06-06 2 views
0

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

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

Например, у нас были бы «клиенты» из-за отсутствия лучшего термина, у которых было бы где угодно от 100-250 000 «продуктов». Предполагая, что у нас могут быть сотни клиентов.

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

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

Я просто не могу понять стол с 40 миллионами рядов (и потенциал для постоянного роста).

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

+0

Чтение между строками, некоторая форма базы данных [NoSQL] (http://en.wikipedia.org/wiki/NoSQL) может служить вам лучше для хранения этой «товарной» информации. – DaveRandom

+1

40 миллионов строк ничего не представляют для ** правильно установленной ** базы данных. – deceze

+0

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

ответ

1

Да, это возможно, и моя компания это делает. Я, конечно, не собираюсь говорить, что это умно. У нас есть система автоматизации маркетинга SAAS. В некоторых клиентских базах данных есть 1 миллион + записей. Мы имеем дело со второй «общей» базой данных, которая имеет таблицу «выполнения», отслеживающую электронные письма, письма, телефонные звонки и т. Д. С более чем 4 миллионами записей, а также множество других очень больших общих таблиц. При правильном индексировании, оптимизации, обслуживании отдельного сервера только для БД и, возможно, кластеризации (что нам еще не нужно делать) вы можете обрабатывать множество данных ... во многих случаях те, кто считает, что это может обрабатывать только несколько сотен тысяч записей на конкурирующем продукте для жизни. Если вы все еще сомневаетесь в том, действительно ли это, учтите, что для показателей кластеризации MySQL кластер 8 серверов может обрабатывать 2,5 миллиона обновлений PER SECOND. Не слишком потрепанный вообще .....

Проблема с использованием двух баз данных - жонглирование несколькими соединениями. Это сложно? Нет, не совсем. Вы создаете разные объекты и ссылаетесь на свои классы соединений на основе той базы данных, которую вы хотите. В нашем случае мы попали в основной класс базы данных базы данных, чтобы вывести имя клиента db, а затем построим второе соединение на основе этого. Но когда вы жуете эти соединения назад и вперед, вы можете столкнуться с ошибками, требующими дополнительной отладки. Это не просто «Является ли мой запрос действительным?» но «Я действительно получаю правильное соединение с базой данных?» В нашем случае отбрасываемый сеанс может привести к возникновению всех видов ошибок PDO, поскольку система больше не может отслеживать доступ к базе данных клиентов. Кроме того, с точки зрения ремонтопригодности, это страшный процесс, который пытается перенаправить обновления структуры таблицы на 100 различных баз данных в реальном времени. Да, это может быть автоматизировано. Но один проскользнул, и вы сбили много людей и сделали массу дополнительных работ для себя. Теперь вычислите дополнительную разработку и тестирование, необходимые для жонглирования подключений и push-обновлений ... это будет вашей мерой того, стоит ли это.

Моя рекомендация? Найдите хост, который позволяет поместить две машины в одну и ту же локальную сеть. Мы выбрали Linode, но кто вы используете, не имеет значения. Начните с выделенного сервера базы данных, планируйте заранее, чтобы сделать кластеризацию, когда это необходимо. Храните весь свой контент в одном БД, индексируйте и оптимизируйте религиозно. Наконец, найдите ДЕЙСТВИТЕЛЬНО хорошего парня БД и хорошо относитесь к нему. Благодаря такому большому количеству данных, большой администратор базы данных был бы обязательным.

+0

Замечательный ответ, очень тщательный :) Я никогда не думал о проблемах отладки/подключения. И с потенциальными бедствиями, я думаю, вы испугали меня остаться с одной базой данных, ха-ха. PS Я люблю вашего парня Quizno в значке! –

+0

«Мы любим Subs!» На самом деле, это spongmonkey из http://www.rathergood.com/moon_song. Но это была блестящая кампания и заставила меня купить много субтитров. – bpeterson76

Смежные вопросы