Re: FolderDB - advice wanted

From: Date: Tue, 23 Jul 2019 23:11:29 +0000
Subject: Re: FolderDB - advice wanted
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-326861@lists.php.net to get a copy of this message
Off topic: If objectionable, sorry; Larry Garfield, didn't you author a text on php? It has been a while and I don't have the hard copy text anymore, but didn't you author a Quick Start Guide about php. It was long enough ago to be on php v4x. > On Jul 23, 2019, at 3:23 PM, Larry Garfield <larry@garfieldtech.com> wrote: > > On Sun, Jul 21, 2019, at 10:54 AM, Rene Veerman wrote: >> Hi. >> >> I like JSON a lot better than the SQL data model, >> but now that i've been using it for a few years, >> i find myself combining file system storage of lots of JSON files in >> many sub-folders into a web app, >> like news gathering with commandline PHP per N minutes from 280+ RSS >> online sources, >> into a PHP web-app that loads the latest news, via a web-powered PHP >> filesystem search of the latest new-items JSON files, stored on a >> filesystem thats got folders like >> ./YYYY/MM/DD/hh/mm/ss/CATEGORY_SUBMENU_PATH leading to JSON files. >> >> so now i want something more flexible. something that can give me a >> web-based treeview of data spanning many JSON-like files (in more >> complicated ways than my news app) and even into other file formats >> stored somewhere on the filesystem of some server. >> >> i plan to license this right from the start under a LGPL typed license, >> because i believe input from other developers is key to making a DB >> system that is not only easy to use, but also very efficient to run. >> >> i'd like the code to stay pure PHP, not even using the object oriented >> functionality of PHP, just plain properly named functions and their >> return values. >> >> i'll name this DB architecture FolderDB, and to prevent web-apps from >> forcing the server to reload (and decode!) many .jsone files upon a >> simple request to change something in some referenced .jsone file, i >> plan to run a single PHP server daemon that will respond to a yet to be >> written ASCII/UNICODE protocol. >> >> the file format itself, has to differ from JSON somewhat i think, and i >> also believe we can lose some of the overhead. >> i post this all here to hear your opinion, especially when it points to >> insurmountable problems related to my designs. >> >> i'm also interested to learn about how to add cloud redundancy to this >> DB architecture, preferably with tiered backup servers, or at least be >> prepared for such expansions of the DB architecture later on. >> >> here's the string based format that i came up with so far : >> >> JSON-Extended file format (ASCII / UNICODE) >> >> ------------------ >> { >> key1 : s|string value, >> key2 : 2, >> key3 : 3.4, >> key4a : t, >> key4b : f, >> key5 : [ >> numbered array >> ], >> key6 : { >> named array >> }, >> key7 : url|/siteData/bla/bla/file.jsone, >> key8 : key|key7/someKeyInsideFileBehindURLofKey7_key1/key1a, >> key9 : >> url|/siteMedia/backgrounds/someFile.png||thumb|/siteMedia/backgrounds/thumbs/someFile.png, >> key10 : >> >> url|/siteData/bla2/bla2a/file.odt||thumb|/siteData/bla2/bla2a/file.odt.thumb.png||thumbGenerator|URL >> } >> ------------------ >> >> key4a = true >> key4b = false >> >> key1 would need it's value escaped, using \| and \, > > > 1) "i'd like the code to stay pure PHP, not even using the object oriented > functionality of PHP, just plain properly named functions and their return values." > > OK, right there you're already lost. There is zero reason to avoid OOP in modern PHP. > Objects are, in modern PHP versions, *faster* and *vastly more memory efficient* than array > structures. (cf > https://steemit.com/php/@crell/php-use-associative-arrays-basically-never) > It's also the API style most current developers will be looking for. So you're already > setting yourself up for failure with that sentence. > > 2) "the file format itself, has to differ from JSON somewhat i think" > > So you're not even using real-JSON, which means you can't use the C-based JSON parser > and need to make your own in user-space. That's going to be dog slow compared to even just > using pure JSON, and as Ashley noted modern DBs are blazing fast at searching/sorting/filtering > behavior. Doing that in PHP will never be able to compete. > > 3) " i'm also interested to learn about how to add cloud redundancy to this DB > architecture, preferably with tiered backup servers, or at least be prepared for such expansions of > the DB architecture later on." > > If you're using a file system as your primary storage, Git is the obvious solution for > data replication. I've toyed with that approach before and while it wasn't a completed > project I think it's promising. > > But seriously, this is not a good approach at all. If you don't like SQL, there are other > options that may fit your data model better. MongoDB is the obvious one (JSON native), but MySQL, > MariaDB, PostgreSQL, and SQLite *all* have (slightly incompatible of course) JSON data types and > query-ability. You can store and query JSON in an SQL database just fine, and it's going to be > waaaaaay faster and waaaaaay more flexible than just using the file system, especially when you > start mixing and matching JSON and relational concepts to leverage both in the places where they > make the most sense. > > --Larry Garfield

« previous php.general (#326861) next »