Как обрабатывать потребление большого количества данных из нескольких источников в веб-сайте - PullRequest
1 голос
/ 05 октября 2010

Это «мета» вопрос, который я задаю, чтобы лучше понять некоторые крепкие орешки, которые мне пришлось сломать в последнее время.Даже если вы не получите именно то, к чему я здесь обращаюсь, или слишком много текста для прочтения, любой практический вклад приветствуется и, вероятно, полезен.

Предположим, у вас есть веб-сайт, который должен использовать данныеэто хранится в нескольких таблицах базы данных.Эти данные нужно будет повторять множеством способов, использовать для расчетов в разных местах и ​​т. Д.

Таким образом, на странице, которая должна отображать коллекцию проектов (из одной таблицы БД), каждый из которых содержитколлекция категорий (из другой таблицы БД), каждая из которых содержит 1 или более элементов (из другой таблицы БД), каков наилучший способ сбора данных, их упорядочения и повторения для отображения?

Поскольку каждыйВ проекте может быть 1 или несколько категорий, и в каждой категории может быть один или несколько элементов (но элементы уникальны для определенной категории). Каков наилучший способ упорядочить полученную кучу?

Моя цель в следующем примере:создать таблицу проектов, в которой каждый проект имеет связанные категории, перечисленные с ним, и каждая категория имеет связанные элементы, перечисленные с ним, но мне также нужно объединить данные из таблицы элементов, чтобы отобразить рядом с именем проекта

A Project Name (43 items and 2 of them have errors!)
- category 1
    - item 1
    - item 2
- category 2
    - item 1

Another Project Name (12 items and no errors)
- category 1
    - item 1
- category 2
    - item 1

Что я сделал, так это извлек данные из каждой таблицы и вставилт в переменной.Дая мне что-то вроде:

var $projects = array("id" => 1, "proj_id" => 1, "name" => "aname");
var $categories = array("id" => 1, "cat_id" => 1234, "proj_id" => 1, "cat_name" => "acatname");
var $items = array("id" => 1, "item_id" => 1234, "location" => "katmandu");

Затем я прошел через переменные во вложенных циклах foreach (), создавая строки, которые мне нужно было отобразить.

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

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

Итак, я полагаю, что суть этого вопроса: как вы справляетесь с получением большого количества данных из разных таблиц, а затем объединяете их для отображения и использования в расчетах?

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Похоже, вы захотите использовать SQL JOIN.Рассмотрим их:

http://www.w3schools.com/sql/sql_join_left.asp

Они будут извлекать данные из нескольких таблиц и агрегировать их.Он не даст вполне того, что вы ищете, но он произведет что-то, что вы можете использовать по-другому.

0 голосов
/ 05 октября 2010

это Hadoop то, что вы ищете?

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