2010-02-04 16 views
9

Jestem całkowicie nowym użytkownikiem JSON i być może będę musiał użyć go w przyszłości, więc przeczytałem o tym. Jest wiele pytań dotyczących JSON na SO. Znalazłem mnóstwo artykułów za pomocą Google'a, czytałem json.org, ale nie rozumiałem, jak przechowywać dane JSON.Jak przechowywać dane JSON na dysku?

JSON to lekki format wymiany danych. Więc w jaki sposób przechowuję jego dane? W pliku plik? W bazie danych ? Czy to ma znaczenie?

Mogę go użyć do przekazania danych do jsTree (jsTree jest komponentem drzewa przeglądarki opartym na javascript, który jest spakowany jako wtyczka jQuery.) Byłby z Wordpress. Próbuję zrozumieć, w jaki sposób będę przechowywać dane? W pliku? Plik tekstowy? W bazie danych Wordpress? Który z nich jest szybszy? Lepiej używać?

OBECNY STAN przed każdym kodowaniu nie ma aplikacja działająca

  • Przygotowuję dane źródłowe i do tej pory mój plik źródłowy CSV jest 235KB w rozmiarze z około 700lines (wiersz = przyszłych węzłów /odchodzi). Używam pliku csv tylko po to, aby zebrać dane, a następnie załaduję/zaktualizuję źródło danych na serwerze sieciowym.
  • Liczba będzie rosnąć, powiedzmy co tydzień o 5-10.
  • Plik znajduje się na moim lokalnym komputerze i będzie przechowywany (w jakiś sposób) na serwerze webhosting. Należy pamiętać, że użyję całej aplikacji jsTree + JSON w ciągu Wordpress
  • Chyba mogę to wykorzystać: Now parse Client side json with Wordpress
+1

W przypadku formatów wymiany danych dane są zwykle przechowywane w DB, a format jest po prostu przejściową reprezentacją danych. Myślę, że rzadko jest przechowywać tę reprezentację (czy to JSON, XML, itp.). Na przykład możesz uzyskać JSON z usługi sieciowej przez inną firmę zewnętrzną, ale niekoniecznie _store_ JSON. –

+0

@ Michael Wielkanoc: Nie mam danych zapisanych do tej pory. Odkrywam, jak to się stanie. – Radek

Odpowiedz

25

Chyba pierwszą rzeczą do zrozumienia jest to, że JSON jest tylko jeden sposób przedstawiania informacji. Możesz przechowywać dane, jak chcesz. Jeśli masz relacyjną bazę danych, prawdopodobnie możesz wymyślić rozsądny sposób konwersji danych tam iz powrotem.

{ 
    "id": 321 
    "name" : "Jim", 
    "age" : 27, 
    "email" : "[email protected]" 
} 

może być reprezentowana w XML jako

<person> 
    <id>321</id> 
    <name>Jim</name> 
    <age>27</age> 
    <email>[email protected]</email> 
</person> 

lub mogą być przechowywane w tabeli, która wygląda jak

_______________________________________ 
| id | name | age | email    | 
======================================== 
|321 | Jim | 27 |[email protected]  | 
---------------------------------------- 

Więc jeśli można przechowywać informacje jednak chcesz. Po prostu potrzebujesz sposobu na szeregowanie/odserializowanie danych w dowolne formy.

Wszystko, co mówi, Jeśli trzeba sklepie JSON i przechowywanie go w postaci pliku nie będzie działać, prawdopodobnie chcesz, aby spojrzeć na CouchDB lub MongoDB. Są to zorientowane na dokumenty bazy danych, które faktycznie przechowują dokumenty JSON. Pozwalają ci przechowywać wszystkie dokumenty JSON, które chcesz. Możesz budować widoki i bezpośrednio przesyłać zapytania do danych bez konieczności konwertowania danych do różnych formularzy.

+1

@Steve g: czy dobrze jest mieć inną bazę danych, jeśli wszystko ma się "zdarzyć z wordpress"? – Radek

4

Coś jak CouchDB to baza danych, która przechowuje ją wewnętrznie w pliku. Większość ludzi w ogóle/nie zapisuje/JSON-a, generuje go i wysyła, lub przetwarza i przetwarza.

JSON jest idealnym formatem do serializacji danych, ale te same zastrzeżenia odnoszą się do niego jak do każdego innego formatu serializacji. Czy przechowujesz XML w DB? Zwykle nie.Różnica polega na tym, że XML sprawia, że ​​poświęcenia obejmują ludzi, a JSON sprawia, że ​​ofiary łatwo można szybko i szybko parsować.

JSON nie jest tak naprawdę zamiennikiem pliku CSV. Pomyśl o CSV jako o luźno sformułowanym mechanizmie dumpingu dla tabeli. Nie byłoby zbyt wielkim sensem eksport do JSON.

1

Pogoda, w której jest przechowywany w bazie danych lub w pliku, nie ma znaczenia. Chodzi o to, że musisz mieć możliwość pobrania go w postaci ciągu znaków (przy użyciu protokołu HTTP lub skryptu po stronie serwera).

Na przykład, jeśli zapiszesz go jako plik o nazwie data.json, możesz użyć ajaxa, aby go pobrać, ale jeśli przechowujesz go w bazie danych, musisz użyć skryptów serwera (nadal możesz użyć ajaxa).

Jeśli masz doświadczenie z xml, pomyśl o jsonie jako o tym samym, to tylko ciąg danych reprezentujących ciągi znaków.

1

JSON jest formatem wymiany. Możesz go zapisać w pliku lub w DB, jeśli chcesz, tak jak w każdym innym formacie, ale czy to dobry pomysł, zależy dokładnie od tego, co robisz.

Mówisz: "Do tej pory mój plik źródłowy csv ma ​​rozmiar 235 KB i około 700 linii (węzłów/liści)". Czy rozważasz przejście z CSV na JSON? (Tak naprawdę nie mówisz.) Mówisz też: "Liczba będzie rosnąć, powiedzmy co tydzień o 5-10". Ani pliki CSV, ani JSON nie są tak naprawdę optymalne dla dużych plików, które będą podlegały dodatkowym zmianom, z wyjątkiem CSV, w którym można efektywnie dołączać dane. Jeśli dołączanie to wszystko, co robisz, możesz trzymać się CSV, ale jeśli chcesz zrobić inne modyfikacje, prawdopodobnie rozłożę dane do bazy danych, aby można było wydajnie aktualizować.

W rzeczywistości ilość danych, o których mówisz, jest niewielka, a przy tak niewielkiej liczbie aktualizacji tygodniowo prawdopodobnie nie musisz martwić się o wydajność. Rób co chcesz. :-)

+0

@ Laurence Gonsalves: Myślałem, że html 235KB będzie zbyt duży. Więc może potrzebuję użyć czegoś innego. – Radek

+0

@Laurence: Jeśli chodzi o przyrostowe zmiany, mam na myśli projekt do przechowywania danych przyrostowych w różnych plikach i zastosowanie logiki, aby określić, który plik ma być zapytany lub zagregować zapytanie !!! np :(1) strona wyświetlająca dane tabeli z pagenacją. Zamiast przechowywać wszystkie te dane w jednym .json, będę przechowywać je w 10 plikach .json. (2) strona internetowa, która pokazuje raport populacji według kraju, pobiera dane z pliku .json o numerze . Przechowam dane przyrostowe w innym pliku > .json. Generując raport, będę agrefować informacje. Jakie są twoje przemyślenia? – Gana

+0

@ user2504156, który brzmi, jakby potrzebował własnego pytania. Komentarze są zbyt ciasne, bym zrozumiał, o czym mówisz, lub by przekazać jakieś sensowne myśli. Zastanawiam się, dlaczego przechowujesz JSON zamiast przechowywać w DB, a następnie po prostu używając JSON do transportu do klienta. –

Powiązane problemy