Paweł Olaszek

Paweł Olaszek QA
Engineer,MCTS,MCP,St
udent

Temat: Streaming typy BLOB

Witajcie,

Chce odczytac z bazy danych z tabeli w ktrore przechowywany jest typ BLOB stream video. Problem w tym ze najprosciej to zrobic tak zeby odczytac bloba i zapisać sobie na dysku jako gotowy plik video i dopiero wyświetlić.

Czy ktos wie jak to można zrobić zeby odczytać BLOB bezposrednio z bazy i np bez zapisywania całości zacząć odtwarzac plik jak bedzie sciagniete tylko 50 %
Dariusz S.

Dariusz S. Certified Scrum
Master, MCPD,
Business Owner -
London, UK

Temat: Streaming typy BLOB

na początek zastanów się nad użyciem MemoryStream

powinno pomóc

ewentualnie porusz temat na środowym spotkaniu grupy ;)

pzdr

konto usunięte

Temat: Streaming typy BLOB

Paweł Olaszek:
Witajcie,

Chce odczytac z bazy danych z tabeli w ktrore przechowywany jest typ BLOB stream video. Problem w tym ze najprosciej to zrobic tak zeby odczytac bloba i zapisać sobie na dysku jako gotowy plik video i dopiero wyświetlić.

Czy ktos wie jak to można zrobić zeby odczytać BLOB bezposrednio z bazy i np bez zapisywania całości zacząć odtwarzac plik jak bedzie sciagniete tylko 50 %

Relacyjna baza danych ogólnie nie sluzy do zeby przechowywania duzych BLOBowych danych i taki MS SQL nienajlepiej sobie z tym radzi. Zastanow sie nad zastosowaniem jakiegos systemu zarzadzania plikami, wtedy twoje wymagania beda spelnione "od reki".
Paweł Olaszek

Paweł Olaszek QA
Engineer,MCTS,MCP,St
udent

Temat: Streaming typy BLOB

Sebastian Pienio:
Paweł Olaszek:
Witajcie,

Chce odczytac z bazy danych z tabeli w ktrore przechowywany jest typ BLOB stream video. Problem w tym ze najprosciej to zrobic tak zeby odczytac bloba i zapisać sobie na dysku jako gotowy plik video i dopiero wyświetlić.

Czy ktos wie jak to można zrobić zeby odczytać BLOB bezposrednio z bazy i np bez zapisywania całości zacząć odtwarzac plik jak bedzie sciagniete tylko 50 %

Relacyjna baza danych ogólnie nie sluzy do zeby przechowywania duzych BLOBowych danych i taki MS SQL nienajlepiej sobie z tym radzi. Zastanow sie nad zastosowaniem jakiegos systemu zarzadzania plikami, wtedy twoje wymagania beda spelnione "od reki".

W takim razie podaj mi jakies przykładowe systemy bo nie bardzo wiem o co chodzi

konto usunięte

Temat: Streaming typy BLOB

Paweł Olaszek:
W takim razie podaj mi jakies przykładowe systemy bo nie bardzo wiem o co chodzi

Moze slynny MogileFS?
http://www.danga.com/mogilefs/

Po paru tweakach na start nie musisz uzywac kilku maszyn.

Slyszalem tez pare dobrych rzeczy o OpenAFS, ale sam nie korzystalem:
http://www.openafs.org/
Maciej Z.

Maciej Z. taskbeat.pl

Temat: Streaming typy BLOB

Sebastian Pienio:
Relacyjna baza danych ogólnie nie sluzy do zeby przechowywania duzych BLOBowych danych i taki MS SQL nienajlepiej sobie z tym radzi. Zastanow sie nad zastosowaniem jakiegos systemu zarzadzania plikami, wtedy twoje wymagania beda spelnione "od reki".

Zgadzam się z przedmówcą. Zapisz jakiś numer referencyjny do pliku, a pliki wideo składuj jako pliki. Ewentualnie użyj jakiegoś serwera mediów, ale nie samej bazy do składowania plików wideo.

konto usunięte

Temat: Streaming typy BLOB

Paweł Olaszek:
Czy ktos wie jak to można zrobić zeby odczytać BLOB bezposrednio z bazy i np bez zapisywania całości zacząć odtwarzac plik jak bedzie sciagniete tylko 50 %
stary post, ale niedawno testowałem filestream w SQL 2008 więc trochę tematu liznąłem.
Odpowiadając na twoje pytanie, na poziomie SQL2005 zrobiłbym to tak:
ważne, by podać SequentialAccess do DataReadera bo inaczej cały wiersz będzie zaczytany jednorazowo (pseudocode):

using(SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess)) {
dr.Read(); //jakis check
SqlBytes bytes = dr.GetSqlBytes(0);
using(var sr = new StreamReader(bytes.Stream)) {
// czytaj do woli z sr
}
}

czyli kluczowy jest SqlBytes.Stream

I druga sprawa, jak niektórzy radzą by przesiąść się na system plików. Otóż dobierając się do LOBa przez, nowość w MS SQL 2008 - filestream, faktycznie zaciera się różnica między plikiem a bazą danych i nie mieszałbym do tego relacyjności. Zerknij na dokumentację SqlFileStream z 3.5SP1.
Zanim zaczniesz stosować inne rozwiązanie zauważ, że na MS SQL 2008 masz z głowy transakcyjność, backupy oraz prawa dostępu. Co do wydajności zrób własne benchmarki, ale przy pliku > 1MB faktycznie warto.

Pozdrawiam

Następna dyskusja:

Delphi, ODBC, PostgreSQL i ...




Wyślij zaproszenie do