Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Способ обработки и хранения данных, хранение инструкций в БД 
:(
    Опции темы
AGENTxXx
Дата 5.3.2013, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Добрый день, уважаемые форумчане!
Хотелось бы узнать ваше мнение, а так же, может и совет!
В общем дело в следующем.

Пишу приложение, которое будет работать с картой и расставлять маркеры. К маркеру можно добавить свое изображение, название, описание.
Есть еще виды маркеров, обычный и скрытый. Хотя виды можно и добавить в будущем.
Данную информацию о маркерах я позже преобразую в xml формат. Пример текста который получится будет выглядеть примерно так:

Код

<?xml version="1.0" encoding="utf-8"?>
<quest id="1" >
    <task title="Задание 1" type="1" id="1" question="Какая 'деревянная' буква стоит недалеко от станции 'Пермь II'?" picture="no" icon="icon/icon_1.png" tooltip="6258845.4130613 7966312.1390158" answer="П"/>
    <task title="Задание 2" type="1" id="2" question="Вы оказались неподалеку от моста, вам необходимо его перейти!" picture="no" icon="icon/icon_2.png" tooltip="6260565.2461975 7966235.7019875"/>
    <task title="Задание 3" type="1" id="3" question="Вам необходимо найти ближайший дорожный знак " picture="no" icon="icon/icon_3.png" tooltip="6259667.1111153 7966866.3074708" answer="stop"/>
    <task title="Задание 4" type="2" id="4" question="Вы получили изображение с ребусом. Вам необходимо его отгадать!" picture="pika_pik.jpg" icon="icon/icon_4.png" tooltip="6261348.7257373 7966388.5760441" answer="автомобиль"/>
</quest>


Мои действия:
1. Формирую подобный текст;
2. Сохраняю данный текст в ячейку таблицы БД;

Далее, когда клиент захочет посмотреть данное описание, то оно будет отправляться по частям (ну чтобы нельзя было воспользоваться всякими FireBug'ами и т.п.

3. Разбиваю данный файл на task'и (используя parsing-скрипт) и располагаю их в другой таблице
4. Отлавливаю, если есть answer и заношу его в отдельную ячейку и вырезаю ее из строки task'а
5. Отправляю данный task клиенту ну и он видит уже что там-то там маркер, ну ему и нужно будет с ним что то сделать...
6. Как действие какое-нибудь выполнено, то получаем другой task (например введен правильный ответ).


Является ли это хорошим решением или все же лучше реализовывать подобную вещь как то по другому? Защита инфы содержащейся в ячейке очень важна (пользователь не должен знать за ранее все task'и).

Понимаю, что может данный вопрос не совсем к php, но так как вся логика пишется на php, а другую тему подходящую не нашел...

Буду очень благодарен, если выскажите свое мнение!
Спасибо!!!

PM MAIL   Вверх
MoLeX
Дата 5.3.2013, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



то есть клиент получает сразу же правильный ответ?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
AGENTxXx
Дата 5.3.2013, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



Нет))) Ответ заноситься в другую таблицу и вырезается из строки, которая передается клиенту. После того, как он дает ответ, данные сверяются на сервере с ответом, если ответы совпали - то передается следующее задание, иначе сообщается об ошибке. (пункт 4).

Ну и данные, которые передаются клиенту имеют структуру JSON.
PM MAIL   Вверх
baldina
Дата 5.3.2013, 17:11 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



очень запутанно и сложно. зачем xml, почему бы не хранить все непосредственно в БД? одна строка - один вопрос. 
PM MAIL   Вверх
AGENTxXx
Дата 5.3.2013, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



baldina - да, это конечно тоже вариант.
Но тут есть несколько нюансов: 
1. Функциональные возможности по созданию "инструкций" еще полностью не ясны и может получиться так, что не просто будет хранить данную инфу в таблице.
2. Не все "инструкции" могут понравиться пользователям и следовательно их не надо будет разбивать на части, что сохранит нам 2ую таблицу в БД и не будет ее забивать (и в планах, если кто то использует инструкции и дошел по ним до конца, то они будут удаляться из 2ой таблицы, при условии, что ими больше не кто не заинтересован).
3. Легкость в интеграции с другими языками (например с C#) - так как на многих языках есть свой парсинг xml.
4. Скорее всего будет возможность редактирования этих данных и пользователь, создавший эти инструкции может разом получить их из одной ячейки.


Сейчас реализация идет на веб-технологиях. Но если она будет успешной, то будет перенос как минимум на C#+XAML. xml в данном случае используется для того, чтобы не придумывать какую-то свою структуру данных и не писать потом свой парсинг. А написанные данные пользователем все равно нужно засовывать в какой то формат и передавать php скрипту, который уже будет его обрабатывать. 

Так что принцип: храни все в одном месте, понадобиться если - разбей и сохрани в другом, уже не надо - удали из другого и пусть ждет новый запрос для "первого" места.

Или baldina можешь предложить вариант, который позволяет хранить все "инструкции" созданные пользователем в удобном виде (пока работает пользователь, все данные сохраняются с помощью javascript) и потом - передача на сервер.

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

PM MAIL   Вверх
baldina
Дата 5.3.2013, 18:11 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



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

2. не понял аргумент. 

3. зачем навешивать xml (независимо от легкости работы с ним), если от него можно вообще отказаться. это лишний слой.

4. пользователь, создавший эти инструкции может разом получить их из всех ячеек.
Код

select * from t where topic_id=xxx


Цитата(AGENTxXx @  5.3.2013,  17:44 Найти цитируемый пост)
пока работает пользователь, все данные сохраняются с помощью javascript

т.е. в объектах/массивах javascript
Цитата(AGENTxXx @  5.3.2013,  17:44 Найти цитируемый пост)
и потом - передача на сервер

в формате json, откуда легко и просто получается в виде объектов и массивов серверного языка. которые легко и просто кладутся в хранилище.
хранилищем, кстати, может быть и xml, но на прикладном уровне лучше про формат хранения вообще ничего не знать.
PM MAIL   Вверх
MoLeX
Дата 5.3.2013, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 0
Всего: 140



можно же просто в json хранить данные


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
AGENTxXx
Дата 6.3.2013, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



baldina, на счет второго:
Вот смотри, у нас есть запись в таблице inctructions вида приведенного выше (в xml формате), но пусть там будет например 30 строк. Если клиент решил открыть их, то эти данные разбиваются на 30 строк и сохраняются в др. таблицу и по частям начинают отправляться пользователю. Как только пользователь прошел все инструкции, они удаляются по id из таблицы instructions.
Если пользователю не понравилось описание данных инструкций, то он их и не будет отрывать и следовательно 2ая таблица не будет дополнительно забиваться, что увеличит скорость работы БД при большом количестве инструкций и пользователей.

json'е хранить можно, но по мне это не очень удобно читается, если данных много (т.е. не такая очевидная структура), а вот xml - нагляден и понятен.
В общем пока окончательно не решил, на чем остановиться, но думаю к концу недели сделаю свой выбор (еще поинтересуюсь у людей в живую).
PM MAIL   Вверх
Gold Dragon
Дата 6.3.2013, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 1
Всего: 71



а как насчёт моего любимого формата - INI?  smile 

Код

[id:1]
title = "Задание 1"
type = 1
question = "Какая 'деревянная' буква стоит недалеко от станции 'Пермь II'?"
picture = "no"
icon = "icon/icon_1.png"
tooltip = "6258845.4130613 7966312.1390158"
answer = "П"

[id:2]
title = "Задание 2"
type = 1
question = "Вы оказались неподалеку от моста, вам необходимо его перейти!"
picture = "no"
icon = "icon/icon_2.png"
tooltip = "6260565.2461975 7966235.7019875"

[id:3]
title = "Задание 3"
type = 1
question = "Вам необходимо найти ближайший дорожный знак "
picture = "no"
icon = "icon/icon_3.png"
tooltip = "6259667.1111153 7966866.3074708"
answer="stop"


INI по сравнению с XML в разы быстрее. Да и обработка заключается в использовании одной функции..


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
baldina
Дата 6.3.2013, 17:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



AGENTxXx, насчет второго мне понятно, как ты хочешь поступить, непонятно зачем))) зачем вторая таблица? если она для текущего состояния ответов пользователей, то я так и не вижу преимущества разрезания текста на части перед хранением его в отдельных строках таблицы. без разрезания во второй таблице (состояния) будут только id.

Цитата(AGENTxXx @  6.3.2013,  08:34 Найти цитируемый пост)
не очень удобно читается, если данных много (т.е. не такая очевидная структура), а вот xml - нагляден и понятен

очень спорно, что xml нагляднее json при больших объемах. слишком много в нем избыточных букв. хотя аспект понятности исходных данных в данной задаче  мне не кажется важным.
PM MAIL   Вверх
Fortop
Дата 7.3.2013, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(AGENTxXx @  6.3.2013,  08:34 Найти цитируемый пост)
Если пользователю не понравилось описание данных инструкций, то он их и не будет отрывать и следовательно 2ая таблица не будет дополнительно забиваться, что увеличит скорость работы БД при большом количестве инструкций и пользователей.

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


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
AGENTxXx
Дата 12.3.2013, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 8.6.2009

Репутация: нет
Всего: 1



В общем, поговорил я с людьми... И сделал такой вывод:
1) Как мин. первую версию решено реализовывать в json
2) Из-за того, что в xml возможностей больше, то есть вероятность, что при увеличении сложности приложения будет переход на него

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

Ну в общем, время и результат покажет, может и Fortop ты будешь прав!


Всем большое спасибо за обсуждение! 
Если друг что-т интересное выявлю - сообщу! =) 


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.