|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Привет есть объект данных распарсивание которого занимает приличное время - например 1 минуту и весит 1 гиг есть приложение которое работает с данным обьектом путем загрузки из базы данных хочу сделать кеширующее приложение которое будет хранить в себе несколько последних объектов для передачи их в готовом виде( в приложение) то есть что то типа приложение 1 запросило данные - в кеше нет - получило из базы - распарсило - получило итоговый объьект размером в гиг и тут же передало копию обьекта в другое приложение 2 на хранение после этого приложение 1 завершило работу стартует новая копия приложения 1 - запрашивает данные и видит что у приложения 2 есть то что ей надо получает копию из приложения 2 вопрос - какие технологии лучше всего мне подходят для этой задачи п.с. использую net 4.5 приложение 1 32 бит приложение 2 планирую 64 бит чтобы хранить побольше обьектов ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 20:03 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fx, 1) Что такое на 1GB может быть, что его приходится "парсить"? 2) Если на сервере кеширования объект будет находиться в исходном виде и его получение из СУБД не связано со сложным изменяющимся запросом, то он не даст никакого преимущества (сервер СУБД и сам способен отдавать данные с высокой скоростью) 3) Может стоить рассмотреть получение этого объекта в виде Stream? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 20:41 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 21:13 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
приложение не веб есть такого плана решения для win приложений? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 21:58 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fx, Что мешает memcached использовать не в Web? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2013, 23:24 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxесть объект данных распарсивание которого занимает приличное время - например 1 минуту и весит 1 гиг Как и чем парсишь? Возможно, нужна просто оптимизация? Alexander_fxесть приложение которое работает с данным обьектом путем загрузки из базы данных хочу сделать кеширующее приложение которое будет хранить в себе несколько последних объектов для передачи их в готовом виде( в приложение) Зачем писать велосипед в виде альтернативы той же базы данных, если нужно просто научиться работать с СУБД, индексами и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 09:09 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxприложение 1 запросило данные - в кеше нет - получило из базы - распарсило - получило итоговый объьект размером в гиг Определи понятие "объект". Это что-то большое и непрозрачное (просто гигабайт каких-то данных) или что-то структурированное? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2013, 11:43 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
НахлобучAlexander_fxприложение 1 запросило данные - в кеше нет - получило из базы - распарсило - получило итоговый объьект размером в гиг Определи понятие "объект". Это что-то большое и непрозрачное (просто гигабайт каких-то данных) или что-то структурированное? сложная структура состоящая из нескольких видов классов получение ее из сырых данных занимает время измеряемое минутами - для этого и хочу кешировать последние обьекты проблема в том что клиентское приложение 32 бита и вряд ли перейдет на 64 а хранить думаю на этом же компьютере но в приложении 64 бит - памяти много ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 03:55 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxполучение ее из сырых данных занимает время измеряемое минутами - для этого и хочу кешировать последние обьекты Еще раз, по пунктам: Что именно это за данные? Как и чем парсишь? Почему ты считаешь, что твой алгоритм парсинга абсолютно идеален и не нуждается в отпимизации? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 09:47 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУAlexander_fxполучение ее из сырых данных занимает время измеряемое минутами - для этого и хочу кешировать последние обьекты Еще раз, по пунктам: Что именно это за данные? Как и чем парсишь? Почему ты считаешь, что твой алгоритм парсинга абсолютно идеален и не нуждается в отпимизации? дык а какая разница что за данные примерно 30 миллионов структур содержащие в себе другие структуры читаю записи из базы и построчно парсю - распарралелить нельзя так как каждая следующая строка зависит от предыдущей даже если я улучшу парсер то время получения обьекта из кеша будет лучше чем новый парсинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 14:55 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fx, можно еще само хранение улучшить... чтобы это был... не парсинг + мапинг... и логику самого приложения... ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:04 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxдык а какая разница что за данные Большая разница. К тому же я спрашивал не только о данных, а и о способе их чтения. Если ты будешь читать один атрибут из xml размером в 100Мб через XmlDocument, ты получишь в лучшем случае сильные тормоза. Намного оптимальнее будет читать через XmlReader и конкретно нужный атрибут, не загружая остальные. Alexander_fxпримерно 30 миллионов структур содержащие в себе другие структуры Что за структуры, откуда они получены? Это разом загруженные данные или порционное (итерационное) обращение в БД? Почему из тебя нужно вытягивать всю информацию по ниточкам? Опиши подробно, что, как и зачем. Alexander_fxчитаю записи из базы и построчно парсю - распарралелить нельзя так как каждая следующая строка зависит от предыдущей Еще раз, ты загружаешь все данные в память, а потом разбираешь? Или обращаешься к базе n раз? Alexander_fxдаже если я улучшу парсер то время получения обьекта из кеша будет лучше чем новый парсинг. Ты сначала внятно сформулируй ситуацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 16:27 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУ, делаю запрос к базе возвращается datareader в котором 30 миллионов строк по 30 полей если не парсить а тупо считать ридер то время равно 10-15 сек - по сути время чтения с винта парсер обрабатывает эти строки и формирует обьект с данными на это у него уходит примерно 5-7 минут оптимизация уже есть и дальнейшая сильно усложнит код есть идея помещать полученные обьекты - а это около 1 гига в программу хранилище и получать этот обьект в последствии так как по статистике обьекты используются в течении дня неоднократно вот такая задача ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2013, 18:47 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxвот такая задача Ну теперь всё стало на свои места. Так вот, зачем что-то там изобретать с кешированием гигабайта, если нужно просто заюзать вторую расчетную БД (DWH). Периодически рассчитывай и формируй объекты в ней, она и будет тем самым кешем. Можно взять и nosql вариант, как тут советовали, но 30 млн строк - это детский сад, который способна захостить любая современная СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 15:28 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУAlexander_fxвот такая задача Ну теперь всё стало на свои места. Так вот, зачем что-то там изобретать с кешированием гигабайта, если нужно просто заюзать вторую расчетную БД (DWH). Периодически рассчитывай и формируй объекты в ней, она и будет тем самым кешем. Можно взять и nosql вариант, как тут советовали, но 30 млн строк - это детский сад, который способна захостить любая современная СУБД. да нет проблем с хранением 30 миллионов строк проблема в том что чтобы собрать обьект из 30 мил строк - требуется 5 минут а время терять жалко - в день 20 запросов вот и два часа прошло а так собрали обьект и храним в ПАМЯТИ - что толку в DWH - его туда все равно запарсить надо и потом достать - и не известно будет ли эта упаковка - распаковка быстрее этих 5 минут что уже имеем ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 13:12 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxпроблема в том что чтобы собрать обьект из 30 мил строк - требуется 5 минут Ну и отлично. А за сколько надо? Это ведь не простой твоих потребителей, это простой отдельной песочницы. А потребители уже будут тянуть честные данные из DWH за миллисекунды. Alexander_fxа время терять жалко - в день 20 запросов вот и два часа прошло Батенька, так ты ночью засвопься в кеш через отдельную песочницу (вин сервис, к примеру), а весь день 20 запросов будут ходить в кеш и брать рассчитанные данные. Alexander_fxа так собрали обьект и храним в ПАМЯТИ - что толку в DWH - его туда все равно запарсить надо и потом достать - и не известно будет ли эта упаковка - распаковка быстрее этих 5 минут что уже имеем Зачем что-то парсить? Вариантов хранения масса, от родного реляционного формата, до всяких там json / xml объектов. Про сериализацию / десериализацию что-нибудь рассказывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 13:21 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУAlexander_fxпроблема в том что чтобы собрать обьект из 30 мил строк - требуется 5 минут Ну и отлично. А за сколько надо? Это ведь не простой твоих потребителей, это простой отдельной песочницы. А потребители уже будут тянуть честные данные из DWH за миллисекунды. Alexander_fxа время терять жалко - в день 20 запросов вот и два часа прошло Батенька, так ты ночью засвопься в кеш через отдельную песочницу (вин сервис, к примеру), а весь день 20 запросов будут ходить в кеш и брать рассчитанные данные. Alexander_fxа так собрали обьект и храним в ПАМЯТИ - что толку в DWH - его туда все равно запарсить надо и потом достать - и не известно будет ли эта упаковка - распаковка быстрее этих 5 минут что уже имеем Зачем что-то парсить? Вариантов хранения масса, от родного реляционного формата, до всяких там json / xml объектов. Про сериализацию / десериализацию что-нибудь рассказывать? ну смотри у меня в памяти обьект размером в гиг чтобы сохранить его в DWH его надо сериализовать - например xml одно дело засерить 1 обьект размером в гиг а тут 30 лямов обьектов да еще и с полями - на кождое поле ствой тег и так далее после сериализации обьект станет весить гигов 30 -50 и вот клиент запросит обьект из DWH - как думаеш - за сколько распарситься их xml 50 гиговый обьектик? да его еще придеться через сетку принять ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 15:42 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxодно дело засерить 1 обьект размером в гиг Наоборот, серить такой объект очень плохая практика. Тебе ж еще придется его как-то разбирать, на это потребуется много времени. Alexander_fxа тут 30 лямов обьектов да еще и с полями - на кождое поле ствой тег и так далее Ну так отлично. Хоть миллиард объектов, какая разница? Каждый объект честно сериализован в xml / json. Налету по ID получаешь объект, десериализуешь его тело (xml / json) и отдаешь потребителю. Именно так и работают высокопроизводительные nosql базы данных. Быстрый доступ по идентификатору, остальной хвост в виде xml / json. Alexander_fxпосле сериализации обьект станет весить гигов 30 -50 Чё? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 15:48 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУ, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
вот как раз обьект test весит 1 гиг допустим что на его получение уходит 5 минут - там сложные расчета и так далее как его засунуть в DWH ?? хмл увеличит размер существенно - не думаю что получение этого обьекта из хмл будет быстрее ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 16:02 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxвот как раз обьект test весит 1 гиг допустим что на его получение уходит 5 минут - там сложные расчета и так далее как его засунуть в DWH ?? хмл увеличит размер существенно - не думаю что получение этого обьекта из хмл будет быстрее А зачем его заново пересчитывать в новый экземпляр? Может, лучше допилить существующий? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 14:03 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУAlexander_fxвот как раз обьект test весит 1 гиг допустим что на его получение уходит 5 минут - там сложные расчета и так далее как его засунуть в DWH ?? хмл увеличит размер существенно - не думаю что получение этого обьекта из хмл будет быстрее А зачем его заново пересчитывать в новый экземпляр? Может, лучше допилить существующий? уже все допилено есть база которая хранит сырые данные есть парсер который строит объект из данных есть клиент который работает с полученным объьектом проблема в том что парсер парсит 5-7 минут - а клиент за день может 20-30 раз перегрузиться и просит обьект вот и думаю хранить полученный обьект в памяти в стороннем приложении а серилизовать его и хранить в хранилище как мне кажется накладно - смотри код выше - очень много полей если юзать хмл ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 17:11 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxМСУпропущено... А зачем его заново пересчитывать в новый экземпляр? Может, лучше допилить существующий? уже все допилено есть база которая хранит сырые данные есть парсер который строит объект из данных есть клиент который работает с полученным объьектом проблема в том что парсер парсит 5-7 минут - а клиент за день может 20-30 раз перегрузиться и просит обьект вот и думаю хранить полученный обьект в памяти в стороннем приложении а серилизовать его и хранить в хранилище как мне кажется накладно - смотри код выше - очень много полей если юзать хмл Я правильно понимаю, что (грубо говоря) у тебя в сырой таблице есть n строк. После процессинга одной строки мы получаем 1Гб данных. Тем самым весь процессинг будет весить n * 1Гб? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 17:22 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
А что это за объекты такие? Файлы? Каким образом одна строка может превратиться в 1Gb? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 17:23 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
МСУА что это за объекты такие? Файлы? Каким образом одна строка может превратиться в 1Gb? я же именно тебе ответил в посте выше МСУ, делаю запрос к базе возвращается datareader в котором 30 миллионов строк по 30 полей и пример с кодом довольно точно описывает структуру обьекта то есть не что то одно большое весом в гиг а дестяки миллионов мелких обьектов - распаковка упаковка будет стоить дорого p.s. что странно - форум WCF, Web Services, Remoting и ни одного совета по данным технологиям ... |
|||
:
Нравится:
Не нравится:
|
|||
02.07.2013, 23:07 |
|
Подскажите какую технологияю использовать для задачи
|
|||
---|---|---|---|
#18+
Alexander_fxp.s. что странно - форум WCF, Web Services, Remoting и ни одного совета по данным технологиям WCF, Web Services, Remoting - это транспорт, а не алгоритмы хранения больших объемов данных. P.S. Итого, у тебя есть 30 млн строк, которые ты как-то пересчитываешь, в результате чего появляется некий объект в 1Гб. Так? Что из себя представляет этот объект, это просто обычный список или какой-то сложный xml и т.п.? Почему бы такой же уже отработанный список не загнать обратно в DWH? И все запросы будут идти туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.07.2013, 11:17 |
|
|
start [/forum/topic.php?fid=19&msg=38313943&tid=1397064]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
18ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 167ms |
0 / 0 |