Бинарные данные в MySQL
В общем обращаюсь к знатокам MySQL. Я решил хранить данные машинок в таблицах БД. Таблица сейчас примерно такая:
Обращаюсь к этой таблице в следующих случаях:
В blocks хранится в бинарном виде список id блоков и их количества в данной машинке. В data - данные машинки. Вопрос: Какой тип таблицы подойдет больше, InnoDB или MyISAM? |
Ответ: Бинарные данные в MySQL
MyISAM.
Если есть паранойя, то имеет смысл вынести в файлы. MyISAM может порушиться с концами. |
Ответ: Бинарные данные в MySQL
А из-за чего MyISAM может сломаться?
|
Ответ: Бинарные данные в MySQL
Цитата:
Или если очень яростно писать и читать может произойти подвисание таблицы из-за блокировок, а она там целиком лочится. Если нужен частый доступ, то InnoDB, да и надёжнее. На самом деле да, бери-ка лучше InnoDB. Будет немного медленнее, но профиты на лицо. При записи не вся таблица лочится и если крешнется можно будет починить без бубна. |
Ответ: Бинарные данные в MySQL
А по поводу того, что таблица будет кешироваться в память? InnoDB же имеет буфер для таблиц. У меня примерно данных будет порядка 3 гб на миллион пользователей...
|
Ответ: Бинарные данные в MySQL
С MyISAM проблем не будет, просто юзать нормальный рейд, ну и не держать сервер дома под столом.:) Запись, чтение к тому же будет происходить очень редко, судя по целям таблицы.
А вообще в таких случаях MySQL не юзать, те же файлы лучше будут. |
Ответ: Бинарные данные в MySQL
Не очень хочется иметь дело с миллионами файлов...
|
Ответ: Бинарные данные в MySQL
Тут скорее простое key<>value хранилище подошло бы если уж совсем никак с файлами иметь дел не хочется.
Но я бы лично хранил бы в файлах. Также таблица будет расти с ростом пользователей, или усложнением данных. В один момент нужно будет это дело как-то масштабировать? Если чтение редкое конечно можно и все на одной машине держать, но тут если у тебя не будет хватать трафика уже, либо упрешся в IO, то масштабирование нужно будет. И с файлами это весьма не сложно провернуть, с бд все в разы сложнее. Также бэкапы, с файлами, можно делать бекапы только модифицированных файлов, и написаниет такого скрипта будет выше. Производительность загрузки данных с файлов, будет выше чем через бд, также загрузка файлов не будет иметь практически никакого давления на RAM и CPU в отличии от базы данных. |
Ответ: Бинарные данные в MySQL
Просто будет миллионы файлов по 0,5кб - 1,5кб. Я что-то с трудом представляю как в этом случае будет делаться бэкап нормально...
Т.е. для данных по блокам в машинке делать отдельную таблицу vehicle_id, block_id, count вместо поля blocks, а данные машинки вынести в файлы? |
Ответ: Бинарные данные в MySQL
Да если данные на столько мелкие, то лучше key<>value хранилище.
Для бэкапов, можно писать в бд id файла который модифицировался, при модификации файла. Затем скрипт грузит этот список, собирает все измененные файлы в tar и заливает на тот же S3, и обнуляет таблицу id. Вот вам и весь diff бэкап. Периодически нужно будет делать полный бэкап и удалять все прошлые diff'ы. Но tar'нуть миллионы файлов, задача не столь сложная для нормального stream'ового скрипта (на node пишется быстро). Можно даже с gzip трансформом. Хотя можно взять просто key<>value бд, например cassandra и там хранить такое будет в разы проще и очень оптимально, также cassandra маштабируется хорошо. |
Ответ: Бинарные данные в MySQL
Просто vehicle_id, а в соответствующем файле все данные и о машинке и ее блоках. Пока игрок онлайн в памяти держать, писать в файл при сохранении игроком изменений.
У нас один клиент есть с 15млн файлов, регулярно обновляющихся, rdiff-backup (где-то упоминал уже) используем с ним, быстро делает. А вообще и простенького скриптика сравнения даты изменения файлов или хеш-сумм хватит.:) |
Ответ: Бинарные данные в MySQL
Прочиатл про кассандру, что-то сильно сложно для меня. В общем буду думать, стоит ли выносить в файлы, или нет.
|
Ответ: Бинарные данные в MySQL
У меня в практике наоборот однажды проблема с InnoDB случилась, таблица покрошилась. Меня это коснулось косвенно, но сисадмин долго матерился и чо-то там чинил, и сказал, чтобы юзали MyISAM, несмотря на её недостатки. Осадок остался, поэтому сейчас использую InnoDB только там, где это критично.
|
Часовой пояс GMT +4, время: 23:35. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot