Как автоматически создать таблицу и структуру для базы данных, используя XML в Cakephp - PullRequest
0 голосов
/ 11 января 2012

Есть ли способ, которым мы можем динамически создавать таблицы и структуры для базы данных, используя Xml?

Чтобы столбцы создавались с использованием Xml в качестве ссылки.

Есть ли что-то подобное в Cakephp?

Ниже приведен пример XML-файла, который я собираюсь использовать: (я не копировал и не вставлял их все, так как он довольно большой)

</dsr_data_agg_stats>
      <state code="ACT">
        <post_code code="2600">
          <locality name="DEAKIN">
            <dwelling_type code="H">
              <typical_value rank="3341/3697">831000</typical_value>
              <dom score="1" rank="454/5673">56</dom>
              <discount score="0" rank="779/5673">5%</discount>
              <acr score="-1" rank="914/5531">59%</acr>
              <renters score="0" rank="5131/5627">42%</renters>
              <vacancy score="1" rank="4714/5673">2.61%</vacancy>
              <yield score="-1" rank="678/3697">3.69%</yield>
              <som score="1" rank="3915/5144">2.08%</som>
              <search_dsr score="-3" rank="3578/4009">4.9</search_dsr>
              <dsr rank="3121/5673">23</dsr>
              <sr rank="2552/5673">5.8</sr>
            </dwelling_type>
          </locality>
          <locality name="YARRALUMLA">
            <dwelling_type code="H">
              <typical_value rank="3438/3697">931250</typical_value>
              <dom score="1" rank="454/5673">56</dom>
              <discount score="0" rank="779/5673">5%</discount>
              <acr score="-2" rank="1999/5531">42%</acr>
              <renters score="0" rank="5131/5627">42%</renters>
              <vacancy score="1" rank="4714/5673">2.61%</vacancy>
              <yield score="1" rank="678/3697">4.76%</yield>
              <som score="0" rank="4333/5144">3.03%</som>
              <search_dsr score="-3" rank="3277/4009">7</search_dsr>
              <dsr rank="3121/5673">23</dsr>
              <sr rank="2552/5673">5.8</sr>
            </dwelling_type>

...

1 Ответ

0 голосов
/ 11 января 2012

Я работаю над тем, чтобы сделать что-то подобное, но с RSS-лентами.Я обнаружил, что мне действительно нравится синтаксис redis , который позволяет вам использовать как можно более сложный и жестко структурированный словарь, но со всеми преимуществами доступа к любому из основных современных типов данных,выложено на хэш-карте.Есть очень простые в использовании клиенты на множестве разных языков, но все сводится к размышлениям о том, как можно надежно структурировать строковые шаблоны, чтобы найти то, что вы хотите, как показано ниже, в значении «действие» «ключ» шаблона.', где $ обозначает компонент variabe данной строки:

get locality:$id = name
list locality:dwellings = [dwelling:id, dwelling:id ...]
map-get dwelling:id 'typical_value' = 'rank: $rank\tvalue: $value'

Я использую PHP для непосредственного взаимодействия с Redis и выполняю вызовы на стороне клиента через асинхронные взаимодействия jQuery $ .post с интерфейсом на стороне сервера.который направляет команды в класс доступа Redis.Интерфейс довольно прост.Вот сторона jQuery.

/*QUERY
 *functional programming puts a big emphasis on "wrapping" repetitive tasks inside
 *another function. This one amounts to the same thing as a protocol in
 *Clojure, with the query map acting as the dispatch value that triggers
 *the right method on the server side, recieves and parses the response,
 *and then passes it on to the "body" of the client logic expressed in callback,
 *which causes side effects on the screen.
*/
redgets.query = function(query_map, callback) {
    $.post(redgets.router, query_map, function(data) {
    return callback($.parseJSON(data));
    });
};

и пример query_map выглядит следующим образом:

{method: 'locality_by_id', localityID: 'locality:1'}

, который, например, маршрутизатор PHP может интерпретировать с:

$response = array();
switch ($_POST['method']) {
case 'locality_by_id':
    if ($_POST['localityID']) {
        $response = $this->locality_by_id($_POST['localityID']);
        break;
//etc, until
return json_encode($response);
}

где $ this-> locality_by_id () - это запрос, который вы написали, чтобы касаться redis через клиентский интерфейс predis .

Redis значительно ускоряет произвольный доступ к файлам XML и упрощает их переносвокруг вас, когда вы обернетесь вокруг, положив древовидные структуры данных на плоскую карту.Это означает, что вы должны написать анализатор, который преобразует элементы DOM в дружественные для перенаправления пары ключ-значение.Я уверен, что у вас есть идеи о том, как лучше всего это сделать.И после того, как вы написали конвертер, вам будет легко сделать обратное.

(я бы добавил больше ссылок, но спам-контроль sez no)

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