2009-07-31 10 views
7

Niedawno ja i moi koledzy rozmawiamy o tym, jak zbudować ogromne systemy pamięci masowej, które mogłyby przechowywać miliardy zdjęć, które można szybko przeszukiwać i pobierać.Czy uważasz, że dobrym pomysłem jest zapisanie miliardów zdjęć w bazie danych?

Coś jak fickr, ale nie dla galerii online. Co oznacza, że ​​większość zdjęć nigdy nie zostanie pobrana.

Moi koledzy sugerują, że powinniśmy zapisać wszystkie te pliki bezpośrednio w bazie danych. Naprawdę czuję, że to nie jest dobry pomysł i myślę, że baza danych nie jest przeznaczona do przywracania ogromnej liczby plików binarnych. Ale mam bardzo silny powód, dla którego nie są to dobre pomysły.

Co o tym myślisz?

+11

Zostało to już omówione na temat śmierci: http://stackoverflow.com/questions/3748/storing-images-in-db-yea- or-nay http://stackoverflow.com/questions/815626/to- Do-or-not-to-do-store-images-in-a-database http://stackoverflow.com/questions/805519/save-image-in-database –

Odpowiedz

17

Podczas pracy z obiektami binarnymi należy kierować się podejściem centrycznym do architektury, a nie przechowywać dokumentów, takich jak pdf i obrazów w bazie danych, w końcu trzeba będzie je naprawić, gdy zaczną pojawiać się wszelkiego rodzaju problemy z wydajnością w bazie danych . Po prostu zapisz plik w systemie plików i umieść ścieżkę wewnątrz tabeli bazy danych. Istnieje również fizyczne ograniczenie rozmiaru typu danych, które będzie używane do serializowania i zapisywania w bazie danych. Po prostu zapisz go w systemie plików i uzyskaj do niego dostęp.

+8

Co ciekawe SQL Server 2008 robi to za Ciebie z FILESTREAM opcja przechowywania - http://msdn.microsoft.com/en-us/library/cc949109.aspx – RichardOD

+0

Chociaż zgadzam się z tym, czy SharePoint nie przechowuje prawie wszystkiego w bazie danych? Jeśli tak, to myślę, że użytkownicy programu SharePoint mogą nie myśleć, że przechowywanie plików w bazie danych jest złym pomysłem. Uważam, że jest to korzystne pod pewnymi względami (np. Zapytanie), ale te sposoby prawdopodobnie nie w pełni przeciwdziałają rzeczom, które tu wymieniłeś. – Dusty

+0

@RichardOD, czytałem gazetę i głównie mówi się o tych samych wyzwaniach związanych z przechowywaniem treści strukturalnych i niestrukturalnych oraz poleca NTFS. "FILESTREAM jest nową funkcją w wydaniu SQL Server 2008. Pozwala na przechowywanie danych strukturalnych w bazie danych i powiązanych danych niestrukturalnych (np. BLOB) do przechowywania bezpośrednio w systemie plików NTFS. danych za pośrednictwem wysokowydajnych funkcji API strumieniowania Win32®, zamiast płacić karę za dostęp do danych BLOB za pośrednictwem SQL Server. " –

0

To nie jest dobry pomysł. Punkt bazy danych umożliwia szybkie rozwiązywanie złożonych zapytań w celu pobrania danych tekstowych. Podczas gdy dane binarne mogą być przechowywane w bazie danych, może to spowolnić transakcje. Jest to szczególnie ważne, gdy baza danych znajduje się na oddzielnym serwerze od działającej aplikacji. W bazie danych przechowuj metadane i lokalizację/nazwę pliku obrazów. Same obrazy powinny znajdować się na statycznych serwerach.

2

Jeśli naprawdę mówimy o miliardach obrazów, chciałbym przechowywać je w systemie plików, ponieważ odzyskiwanie będzie szybsze niż szeregowania i de-seralizing obrazy

+1

Tak, naprawdę mówię o miliardach zdjęć. Cuda zdarzają się każdego dnia. – ablmf

1

Odpowiedzi powyżej wydaje się zakładać bazę jest RDBMS. Jeśli baza danych jest zorientowaną na dokumenty bazą danych obsługującą dokumenty binarne o oczekiwanym rozmiarze, rozsądne może być przechowywanie ich w bazie danych.

+0

Czy mógłbyś wymienić kilka takich baz danych? – Moonwalker

+2

MarkLogic (http://developer.marklogic.com/) obsługuje przechowywanie dokumentów XML, JSON, tekstowych i binarnych. Istnieje REST API, który zapewnia szybkie działanie na stronie http://github.com/marklogic/Corona, a także natywny język zapytań (XQuery). –

Powiązane problemy