Лучший способ хранить сложные отношения огромного количества данных php / mysql

0

Я пытаюсь разработать веб-приложение для управления цифровыми активами. Я планирую сделать это в Codeigniter с mysql как db. Это для популярной региональной газеты. Они будут иметь 1000 записей и ТБ данных, поскольку будут введены ежедневные тонны информации.

Будут разные типы контента, такие как Media, Personality, Event, Issue, Misc и т.д. Все это будет классифицировано. Все будет взаимосвязано. Например, событие "олимпийские игры" будет подключено ко всем участникам таблицы персоналий и всем связанным с этим материалам. Я планирую реализовать это сложное межсоединение, используя таблицы 'connections'

id  -   subject   -  connection   - type 
-------------------------------------------
 1         98           190         media
 2         283          992         issue 
 3         498          130         info

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

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

Теги:
codeigniter

1 ответ

3
Лучший ответ

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

Если вы находитесь на 32-битном сервере, максимальные строки для таблицы составляют 4,2 миллиарда и 4 ГБ без каких-либо изменений конфигурации. Вы можете увеличить лимит на 4 ГБ, но насколько я знаю, ограничение на 4,2 миллиарда строк - это максимум на 32-битном сервере.

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

Вам нужно будет правильно индексировать эту таблицу и от того, как она выглядит, как на тему, тип. Без запроса жестких чисел/примеров с объединениями было бы трудно предсказать, насколько быстро этот запрос будет работать, но если он правильно проиндексирован и имеет высокую мощность, вы должны быть в порядке.

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

В противоположность этому вы также можете взглянуть на некоторые опции NoSQL, такие как MongoDB, которые в зависимости от ваших данных могут быть лучше подходят.

  • 0
    «Наоборот, вы также можете взглянуть на некоторые параметры NoSQL, такие как MongoDB, которые могут лучше подходить для ваших данных». highscalability.com/blog/2010/9/5/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню