2014-08-28 2 views
2

Я сделать игру, и я планирую использовать в BLOB MySQL для инвентаризации символов, как это кажется быстрее, чемКак преобразовать MySQL BLOB в массив PHP шорт?

CREATE TABLE inventory 
(
    userid INT, 
    itemid SMALLINT 
); 

, как это будет в одном месте.

Единственная проблема в том, как? Как преобразовать массив интергеров, мне нужно только байты, в php-образ для базы данных и наоборот.

+3

Не надо. На первый взгляд это может показаться более быстрым, но каждый раз, когда вам нужно изменить элемент, вам придется вытащить blob, преобразовать его, выполнить поиск элемента, изменить его, снова преобразовать массив, снова сохранить его в базе данных. все операции, которые БД может сделать лучше, чем PHP. Просто используйте таблицу для нее. –

+0

Правда, но я планирую, что он будет деблокировать каждый раз, когда пользователь входит в систему, а результирующий массив останется в памяти до тех пор, пока пользователь не выйдет из системы. Затем массив будет BLOBified и сохранен в базе данных. – user2368260

+0

Do. Не. Делать. Эта. Как вытягивание байтового потока, представляющего массив целых чисел, может быть быстрее, чем вытягивание массива целых чисел? – RandomSeed

ответ

0

Процитировать комментарий: не делаем этого. То, что вы, по сути, говорите, это 'hey У меня есть эта замечательная вещь, называемая реляционной системой управления базами данных, способная хранить огромное количество организованных данных, и я собираюсь просто использовать ее как фликерную файловую систему, потому что кому организации и структуры их данных?.

Тогда зачем вообще беспокоиться о базе данных? Просто создайте папку в файловой системе под названием inventory и сохраните тонну JSON-файлов там для каждого пользователя. Я гарантирую, что любая локальная файловая система с надлежащей механикой кэширования будет значительно превосходить сетевую систему баз данных, если производительность важна для вас.

В действительности, ваша реальная проблема заключается в premature optimization, резюмировать:

Программистов тратить огромное количество времени, думая о том, или беспокоиться о, скорость некритических частей их программ, и эти попыток эффективность на самом деле оказывает сильное негативное влияние при рассмотрении отладки и обслуживания . Мы должны забыть о небольших эффективности, скажем примерно в 97% случаев: преждевременная оптимизация - корень всех злых. Однако мы не должны упускать наши возможности в том, что критически 3%.

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

Смежные вопросы