Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.08.2011, 06:31
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 1  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Question что использовать mysql или файловую систему?

Здравствуйте форумчане, подскажите кто разбирается или сталкивался с подобным.
Есть приложение на mail.ru в котором необходимо хранить небольшой кусок текстовых данных о каждом из пользователей, которые они сами же и вводят. Небольшой - это не больше 20000 символов.
Для того чтоб данные занимали меньше места на сервере использовал следующий алгоритм.
Код AS3:
var str:String="Строка которую надо передать."; var b:ByteArray=new ByteArray(); b.writeUTFBytes(str); trace(b.length);// Выводит 20000 b.compress(); trace(b.length);//Выводит 161
161/20000 - это я потому что одну строчку продублировал много раз. Для теста). Реально раз в 10 сжимается. Но и это значительно.
Далее эти данные передаю на сервер и там сохраняю файл. При обращении пользователя отправляю ему файл обратно. Делаю
Код AS1/AS2:
b.uncompress(); var str:String=b.toString();
И все отлично работает - быстрый доступ и нет сбоев. Но сбросил к себе с сервера на комп 1200 таких фалов в папку. Смотрю ее размер (в Windows правой кнопкой просто) пишет
размер - 423кб
на диске - 4,8Мб
Вот и встал у меня вопрос - а сколько же реально такие данные занимают 423кБ или 4,8Мб на сервере? Я то все это делал из-за экономии места на диске (пользователей 500 000). И если 4,8Мб, то не лучше ли будет хранить их в mysql?
П.С. если сжать папку с файлами в zip архив, то его размер всего 200кб.

Старый 26.08.2011, 11:18
olexandr вне форума Посмотреть профиль Отправить личное сообщение для olexandr Посетить домашнюю страницу olexandr Найти все сообщения от olexandr
  № 2  
Ответить с цитированием
olexandr
 
Аватар для olexandr

Регистрация: Aug 2007
Адрес: Ukraine, Kyiv
Сообщений: 643
Отправить сообщение для olexandr с помощью ICQ Отправить сообщение для olexandr с помощью MSN Отправить сообщение для olexandr с помощью Skype™
почему не проверить размер сразу во флеше?
что мешает грузить zip архив и работать с ним?
__________________
сайт, vk

Старый 26.08.2011, 11:44
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 3  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Не вы меня не так поняли. Размер то проверяю без проблем и во флеш и на сервере. Каждый файл - это данные отдельного пользователя и надо их получать при запуске приложения и сохранять обратно в конце работы. Пользователей полмиллиона и их количество растет.
Даже сейчас 500 000х20кб=10Гб данных. А если в сжатом виде 1Гб. Я удивился что Windows показывает размер фалов на диске больше чем сумма размеров всех файлов в папке в 10 раз. Если так же на сервере, то соответственно сжатие не приводит к уменьшению размера необходимого дискового пространства.
Вопрос как лучше хранить эти данные в базе данных mysql или в отдельных файлах чтоб они занимали меньше места? Файла проще загружать на сервер и работать с ними чем с огроменной базой данных.
И второй вопрос почему мой Windows показывает, что размер всех файлов 423кб, а на диске они занимают 4,8Мб? Я честно вообще не понимаю что это за разница и откуда она берется.

Старый 26.08.2011, 11:46
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
У вас файл меньше одного кластера, поэтому и занимают столько.

Старый 26.08.2011, 12:00
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 5  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Спасибо Etc прав на все 100%. Тут нашел инфу http://www.goodkomp.com/page/lokalny...-diske-klaster
Посмотрел у себя у меня кластер 4кб. И большинство файлов в папке меньше этого значения. Значит сжатие файла если он меньше 4кб никакого выигрыша не даст и все это дело вместе займет таки 2-3Гб.
Никаких сбоев, кстати, не возникнет в будущем если в одной папке будут лежать 500 000 фалов? А то я что-то все больше в сторону базы данных mysql склоняюсь.


Последний раз редактировалось Андрей911; 26.08.2011 в 12:25.
Старый 26.08.2011, 16:10
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 6  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Так а что мешает базу-то завести?

Старый 27.08.2011, 09:55
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 7  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Да в общем ничего не мешает - она даже есть, но я никогда не пробовал туда зипихивать бинарные данные, плюс еще начитался в инете что работать с огромными базами неудобно в плане скорости доступа и экспорта импорта. Поэтому решил попробовть с файлами.
Сегодня пытался запихнуть в базу бинарные данные и не получилось. Тип поля data - BLOB

PHP код:

$handle
=fopen($filename,'rb');
$content=fread($handle,filesize($filename));
fclose($handle);
echo 
$content;
mysql_query("UPDATE `users` SET `data`=x'$content' WHERE `id`=12345") or die (mysql_error()); 
выдает ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'x'xЪµњыЏ]WuЗя•I~«E’э~ UЕҐµ…ў†‚ЂєЉЦЮkпxЉг±Жv"ч!сЁЪJ (”@КCў*Z©”BЎPиїpз?кgЏCf’ШЧ' at line 1

Так тоже пробовал
PHP код:
mysql_query("UPDATE `users` SET `data`='$content' WHERE `id`=12345") or die (mysql_error()); 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Сч’*j±^bM9щXѓH)2єYсёуoЮ»wзэ7ћ»сњЧg^”[·ЖсѓgпчЈїxцшюЌзxяМ+GЗ·фЖsw‡<sKnлЭ.wЖЌзRиі' at line 1

разобрался надо было вставлять так же как обычную строку

PHP код:
$content=mysql_real_escape_string($content);
mysql_query("UPDATE `users` SET `data`='".$content."' WHERE `id`=12345") or die (mysql_error()); 
Только вот сделал тест работы скрипта на скорость
чтение и запись данных в базу mysql --- 0.00494 сек
чтение и запись при работе с файлами - 0.00018 сек
Как говорится почувствуйте разницу. Быстродействие падает в 25 раз. Причем основное время в случае с mysql уходит именно на соединение с базой, а не на чтение или запись в нее.

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
bytearray , mysql , сжатие данных

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.