|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
как сохранить/загружать данные. т.е. как лучше делать. понятно , что зависит от условий. и если задача требует БД, то тут никуда не деться. Но если нет ограничений. то можно и подумать. Скажем есть необходимость сохранять/загружать данные в несколько мегов ( может и много больше ). что бы его было возможно перекидывать туда сюда, создавать копии. допускаю ( а так оно и будет), что в последствии нужно будет туда что то добавить, новые поля, массивы. нужно, что бы спокойно переварил старый формат данных. данные будут разноформатные. не только числа и текст. вот как я вижу существующие возможности 1. БД. тут вроде всё понятно и + и - +++: *удобство,понятность *в случае ошибки можно всегда подсмотреть данные , и сторонними средствами (типа SQL manager...) найти и исправить. --- *при больших объёмах сохранение/загрузка начинает напрягать. начиная с x Мб. хотя можно установить что то в духе MySQL. вроде обещают скорость выше *не мобильно. необходимо иметь доступ к БД. просто перебросить файл проекта не получится. только в рамках сети или базу выковыривать и втыкать в другом месте. 2. Сериализация +++ *значительно быстрее чем БД *не нужно никаких усилий , что бы реализовать. --- *если переименовать хотя бы одно сериализуемое поле - загрузка становится невозможной(?) *запросто может создать клоны экземпляра класса. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
* править сохранённый файл низя * требуется наличие ссылок на проект , где сериализуемые классы описаны. сей факт затрудняет использовать этот формат при обмене данными между 2мя разными приложениями. 3. XML подобие сериализации. соизмеримая скорость +++ *можно переименовывать, не нужно ссылок на другие сборки *можно поправить сохранённый файл --- * труднее в реализации , чем сериализация. * бинарные данные хранить в текстовом файле это преступление 4. Што то рукописное а-ля MemoryStream.Read/Write & Byte..... +++ в работе наибыстрейший. близко к теоретическому пределу скорости. огромный массив интов,байт, строк переваривает не напрягаясь --- * наитруднейшей при реализации. особенно при сложной структуре. * править и подсмотреть особо ничего нельзя. hex редакторы что то могут, но не много. вроде как то так. мож что не досмотрел. Исходя из всего этого, склоняюсь к сериализации. хотя не очень хочется это делать. хочется в духе п.4 , т.к. реально это быстро, не требует ничего дополнительно устанавливать, но это целый геморрой .делать и поддерживать возможность версионности данных. Кто что думает? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 21:30 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
beg-in-erхочется в духе п.4 , т.к. реально это быстро, не требует ничего дополнительно устанавливать, но это целый геморрой .делать и поддерживать возможность версионности данных. Сделал так, понравилось. Версионность отличная. Геморроя мало ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 22:03 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
PallarisСделал так, понравилось. Версионность отличная. Геморроя мало как сделал. руками? насколько сложная структура? Код: c# 1. 2. 3. 4. 5. 6.
если такая , то тут всё понятно. п.4. а если много сложнее и запутаннее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 22:12 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
beg-in-erкак сделал. руками? насколько сложная структура? Довольно сложная, с разными типами данных (числа, строки, bool, enumы). Да, руками, из бинарного файла (что-то типа xml). Каждый класс, который нужно сериализовать, наследуется от интерфейса с двумя методами ToSection (создает документ-представление объекта) и FromSection (читает параметры из документа). Каждая секция хранит в себе набор других секций и набор параметров. Весь проект состоит из таких секций с произвольной вложенностью. Другой класс умеет писать/читать эти секции из файлов. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 22:27 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
Начиналось все это с сериализации, но версионность там я не нашел, поэтому ее оказалось невозможно использовать. Написал свою сериализацию, доволен. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 22:29 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
Единственный геморрой - это организовать сериализацию объектов со ссылками друг на друга Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Тут уже нужно думать, чтобы при сериализации не плодить клонов, которые будут на самом деле разными объектами. Я сделал так: у всех объектов есть уникальный идентификатор, и все они сериализованы в одной секции, а в качестве параметров - коды идентификаторов. При загрузке все объекты считываются в один пул, а затем происходит восстановление ссылок по идентификаторам. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 22:50 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
Возьми готовый вариант из NoSql ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2013, 22:55 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
PallarisЕдинственный геморрой - это организовать сериализацию объектов со ссылками друг на друга ну это пожалуй главный геморой , и в этом то и главный смысл. и какая навскидку скорость. по времени. например 10 меговый файл за сколько секунд впитывается ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2013, 12:48 |
|
как выбрать стратегию хранения данных
|
|||
---|---|---|---|
#18+
beg-in-erи какая навскидку скорость. по времени. например 10 меговый файл за сколько секунд впитывается Файл распарсивается за пару секунд. Дольше происходит инициализация объектов и их связывание, что занимает n-ое время, которое тебе ни о чем не скажет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2013, 12:56 |
|
|
start [/forum/topic.php?fid=20&tid=1404584]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 180ms |
0 / 0 |