Dimissio EdgeDB 4.0 DBMS exhibetur, quae instrumenti relationis graphi notitiae exemplar et linguae interrogationis EdgeQL, optimized ad operandum notitia hierarchica multiplici. Codex in Pythone et Rust (parser et perficiendi-criticas partes) scriptus est et sub Apache 2.0 licentia distribuitur. Project est crescendo addendi ad PostgreSQL. Clientis bibliothecae Pythoni parantur, Ite, rusti linguae. .NET, Elixir et TypeScript/Javascript. Recta instrumenta ad DBMS administrationem et exsecutionem interrogationis interactive imperium praebet (REPL).
Instead of the table-funded information model, EdgeDB utitur systema declarativa secundum rationes obiecti. Loco clavium exterarum, relatio relationis inter genera definitur (unum obiectum ut proprietas alterius obiecti).
type Person { required name: str; } type Movie { required title: str; multi actores: personam; }
Indices adhiberi possunt ad processum interrogationis accelerandum. Features ut validae possessiones typing, proprietas pretii restrictiones, possessiones computatae, et rationes conditae sustentantur. Lineamenta objecti EdgeDB schematis reponendi, quod ORM aliquantum simile est, includunt facultatem schemas miscendi, proprietates ex diversis obiectis nexus, et subsidium JSON integrandum.
Instrumenta instructa providentur ad schema migrationis recondendum - mutato schemate in separato esdl lima definito, mox "transmigrationis extremitas creo" mandatum et DBMS differentias in schemate resolvet et scripturam interactive generabit ad migrandum. schema novum. Schematis historia mutationes automatice pervestigata est.
Ad interrogationes generandas, tam GraphQL linguae interrogationis quam linguae proprietatis EdgeDB, quae accommodatio SQL ad notitias hierarchicas est, sustentantur. Loco electronicorum, interrogationes proventus in structuram redacti sunt, et pro subqueriis et JOINs, unam interrogationem EdgeQL exprimere potes sicut expressionem intra aliam interrogationem. Transactiones et cyclos confirmantur.
eligere cinematicam {titulum, actores: {nomen} } colum .title = "Matrix" inserta cinematographica {title := "Matrix Resurrectionum", actores := (select Persona filter .name in {'Keanu Reeves', 'Carrie- Anne Moss', 'Laurence Fishburne' } ) }
In nova versione:
- Auxilia additae investigationis plenae textui, per fts plugin effectae. Ut rem aliquam in documentum quaesitum verterem, uti debes index index, et ft:: search() munus proponitur ut inter documenta recensita certam phrasim quaeras. Eventus redduntur in forma tuples continens obiectum inventum et pondus inquisitionis. Exempli gratia: typus Item { requiritur available: bool { default := falsus; }; requiritur nomen: str; requiratur descriptio: str; index on ( fts :: with_options( .name, language := fts ::Language.lat ) ); } with res := ( select fts ::search(Item, 'candy frumentum', language := 'lat') ) select res.object {name, score := res.score} order by res.score desc;
- Novam notitiarum speciem "multirange" addidit quae unum vel plures valores definit ad intervalla intermissa repraesentandi. Ordinatio imbricatis arearum intra certa iugis sponte conficitur. Omnes antea in promptu functiones et operariorum ad ranges dispensandas cum "multirange" type possunt operari. select multirange([range(8, 10)]) + range(1, 5) — range(3, 4);
- Additae et confirmatae per default authenticas subsidium ad restringere accessum ad GraphQL et EdgeQL super HTTP.
- Ut ministerium authenticas deducas quae separatim ab instantia datorum operatur, extensio "auth" addita est, OAuth vel login utens email et tesseram sustinens.
- Adiectae pgcrypto extensio praebens hmac, gen_salt et cryptae functiones ad hashing et encryptionem. select ext::pgcrypto :: digest('encrypt hoc', 'sha1');
- Adiecta est extensio pg_trgm cum functionibus ad similitudinem chordae determinandam.
- Optimizationes factae sunt ad efficientiam augendam. Consumptio memoriae in server Redactum quadraginta partibus per centum. Codex analysatoris interrogationum EdgeQL in Rust rescriptus est.
- EdgeQL addidit syntaxin conditionalem notiorem fulcimentum (si ... deinde .. aliud ...). Facultatem praebet utendi condicionalibus DML ad creandum, renovandum, ad varias res ex certa condicione delendas. Adiectae sunt functiones to_bytes(), to_str(), enc ::base64_encode et enc ::base64_decode. Felis "cum" expressionibus uti licet. elige si comitem (Object) > 0 tunc 'data obtinuit' aliud 'nota data'; eligere (selectis User filter .name = 'Alicia') ?? (insert User {name := 'Alice'}); select enc::base64_encode(b'hello');
- Novam viam adiecit ut valores globalis quaerentibus GraphQL utendi - loco utendi agro separato, facultas variabiles transeundi secundum obiectum __globals__ additum est.
Source: opennet.ru
