Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: JSON база данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
Crate
Отправлено: 28 Июня, 2012 - 09:45:21
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Всем привет. Это как бы еще не база, но выполняет некоторые ее функции.

Установка.
1. Подключите файл ds.php из папки lib в свое приложение.
2. Создайте объект класса DS ($var = new DS (путь до БД)), и укажите путь до папки БД (она должна быть пуста).

Методы.
1. clean (данные) - очищает данные от опасных символов.
2. create (имя нновой таблицы) - создает новую таблицу (если ее нет).
3. delete (запись, таблица) - удаляет запись в таблице (если есть).
4. drop (таблица) - очищает и удаляет таблицу.
5. exists (имя, тип = таблица) - проверяет на существование.
Пример: 1. exists (array ('запись', 'таблица'), 'item'); 2. exists ('таблица', 'item');
6. get (поля = все, запись, таблица) - возвращает данные.
7. getConfig (таблица) - возвращает информацию о таблице.
8. merge (array (таблицы), имя = имя первой таблицы) - соединяет таблицы в одну (новое имя = "имя").
9. put (данные, имя, таблица) - создает новую запись, если ее нет.
10. search (текст, таблица) - возвращаят массив записей, содержащих "текст".
11. set (данные, имя, таблица) - обновляет данные в записи, если она есть.
12. truncate (таблица) - очищает таблицу, если она есть.
13. version () - возвращает версию DS.
Скоро добавлю описание к остальным.
Скачать файл: ds-1.0.0.zip
Скачан раз: 107

(Отредактировано автором: 05 Июля, 2012 - 16:35:28)

 
 Top
eai
Отправлено: 28 Июня, 2012 - 09:49:17
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


Помог: 10 раз(а)




А зачем ?
 
 Top
Crate
Отправлено: 28 Июня, 2012 - 09:55:53
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




eai такого нет.
(Добавление)
А также для саморазвития.
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Июня, 2012 - 10:03:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Crate, такое есть: noSQL, mongoDB, memcache

А ваша штука может быть полезной, я не смотрел код, вы в файл пишете JSON?
Тогда будет менее накладным держать в файле чистые сериализованные данные, с ними и работать внутри, и только по внешнему запросу типа SELECT отдавать в формате JSON.
 
 Top
Crate
Отправлено: 28 Июня, 2012 - 10:07:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




DeepVarvar пишет:
вы в файл пишете JSON?
да, а отдаю десериализованные данные.

DeepVarvar пишет:
по внешнему запросу типа SELECT отдавать в формате JSON
Это я уже реализую в следующих версиях в виде API.
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Июня, 2012 - 11:18:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Crate пишет:
да, а отдаю десериализованные данные.
Либо вы не поняли, либо не понял я. Повторю другими словами, правильнее всего будет так:
PHP:
скопировать код в буфер обмена
  1. // промежуточные данные для работы
  2. $data = array("...etc...");
  3. // сохранение
  4. file_put_contents($datafile, serialize($data));
  5. // выборка

(Отредактировано автором: 28 Июня, 2012 - 11:19:00)

 
 Top
Crate
Отправлено: 28 Июня, 2012 - 11:37:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




DeepVarvar пишет:
PHP:
А зачем делать так? Я имел ввиду API для удаленной работы с базой.
 
 Top
Crate
Отправлено: 05 Июля, 2012 - 16:36:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Обновил первый пост. Протестируйте, пожалуйста.
 
 Top
DeepVarvar Супермодератор
Отправлено: 05 Июля, 2012 - 18:23:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Я тут потестил кой чего:
PHP:
скопировать код в буфер обмена
  1. class test {
  2.  
  3.   private $property = null;
  4.  
  5.   public function setProperty($value) {
  6.     $this->property = $value;
  7.   }
  8.  
  9.   public function getProperty() {
  10.     return $this->property;
  11.   }
  12.  
  13. }
  14.  
  15.  
  16. $data = array();
  17. for ($clone = 0; $clone < 1000000; $clone++) {
  18.   $obj = new test();
  19.   $obj->setProperty($clone);
  20.   $data["clone" . $clone] = $obj;
  21. }
  22.  
  23. $start = microtime(true);
  24.  
  25. echo '--- serialize ---------' . PHP_EOL; $data = serialize($data);
  26. //echo '--- json_encode -------' . PHP_EOL; $data = json_encode($data);
  27.  
  28. $finish = microtime(true);
  29. echo 'diff: ' . ($finish - $start) . PHP_EOL;

Сериалайз:
Спойлер (Отобразить)

json:
Спойлер (Отобразить)

Выходит лучше юзать json и писать в файл в нем.
 
 Top
caballero
Отправлено: 05 Июля, 2012 - 18:35:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




CouchDB
хранит данные в json
вьюшки, или как они там называются пишутся на яваскрипте
на нем же написан встроееный вебинтерфейс гда прямо из него можно править Бд.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Мелкий Супермодератор
Отправлено: 05 Июля, 2012 - 19:05:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




DeepVarvar пишет:
Я тут потестил кой чего:

Есть одна проблемка. {"clone0":{},"clone1":{},"clone2":{},"clone3":{},"clone4":{},"clone5":{},"clone6":{},"clone7":{},"clone8":{},"clone9":{}...}
$property-то где? А нет его, потеряли. Восстанавливается обратно пустой stdObject.

Но на простых массивах JSON ощутимо быстрее, в 2 раза на записи, на чтении - почти на порядок.


-----
PostgreSQL DBA
 
 Top
Crate
Отправлено: 05 Июля, 2012 - 22:19:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




Мелкий пишет:
Но на простых массивах JSON ощутимо быстрее, в 2 раза на записи, на чтении - почти на порядок.
Он еще и читаем людьми.
 
 Top
DeepVarvar Супермодератор
Отправлено: 06 Июля, 2012 - 01:05:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Мелкий пишет:
Есть одна проблемка
Да я только ради неё и писал методы в клонах, вот только о самой проблемке сказать вылетело из головы Радость
А простые массивы да - быстрее, ну на то она и "база" в простом виде без процедур кстати только данные и хранит, а инструмент для её модификации живет отдельно.

Тут таки можно поприкалываться с memcache, он то данные какраз сериализует, а не json'ит. Це - готовый инструмент, чо велосипеды то строить?

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

Так вот я нашел для себя самый шустрый способ без сериализации и с возможностью блокировки и постановки в очередь - это shmop.
Кроме того, выделенный блок "шары" еще и доступен для всех копий cli/cgi скриптов, не важно от кого выполняющихся. Эта штука нереально супер - стрессо - устойчива, безотказна и шустра.

Так что все вышеперечисленные варианты, кроме shmop - детский лепет с плугом, парашютом и стоп-краном.
 
 Top
Crate
Отправлено: 23 Июля, 2012 - 12:46:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 312
Дата рег-ции: Янв. 2012  


Помог: 4 раз(а)




DeepVarvar пишет:
он то данные какраз сериализует, а не json'ит
По-моему он хранит просто строку, а вот пользователь может закинуть хоть json, хоть сериализованные данные.
 
 Top
DelphinPRO
Отправлено: 23 Июля, 2012 - 13:01:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. define ('DS', DIRECTORY_SEPARATOR);
  2. class DS {...}
  3. $ds = new DS (ROOT . DS . 'store');


Назовите хоть класс по другому, нафиг лишняя путаница в названиях.. (DS)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Наработки по собственным проектам »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB