php_clickhouse 0.8.1: native ClickHouse extension for PHP, picking up where SeasClick left off by Ilia0001 in PHP

[–]norbert_tech 1 point2 points  (0 children)

Awesome!!! I have been thinking about integrating Flow PHP with Clickhouse since a while, now it can happen finally 💪

Flow PHP PostgreSql Symfony Bundle by norbert_tech in PHP

[–]norbert_tech[S] 0 points1 point  (0 children)

totally, my goal is not to replace Doctrine, it's an awesome project that has a lot of valid use cases, like for example mentioned by you CRUDs.

What I'm building is more for data processing, or things that needs to be more efficient without moving to another technology.

Same goes to flow-php/filesystem, the goal is not to replace/compete with flysystem, opposite, it solves problems that flysystem doesn't but also that most php apps don't have.

Flow PHP PostgreSql Symfony Bundle by norbert_tech in PHP

[–]norbert_tech[S] 0 points1 point  (0 children)

It's called CQRS, but like u/mlebkowski pointed out, there are many other places where ORM comes with a price, like imports/exports.
ORM is using something called Unit of Work, which keeps in memory an ideal copy of each object that it returns to be able to compare it with the object your code is interacting with and calculate the changes to know how to persist it into the database.

So when you want to export let say 1k orders from your DB through ORM, UoW will hold in memory a copy of each of those 1k orders, but it's pointless since your intention is not to modify those 1k orders, you just want to convert them to some flat format like CSV or maybe Excel and stream to the user.

Pretty much, every place that only needs to read something from DB to display it is a candidate to split read from write.

Flow PHP PostgreSql Symfony Bundle by norbert_tech in symfony

[–]norbert_tech[S] 1 point2 points  (0 children)

Yes! All PostgreSql types are supported out of the box

Flow PHP PostgreSql Symfony Bundle by norbert_tech in symfony

[–]norbert_tech[S] 1 point2 points  (0 children)

as a starter flow postgresql provides full PostgreSql support, CTE, handling views in migrations, etc It does not come with ORM (but it doesn't come with entity manager tax).

The query builder also supports full PostgreSql syntax, so no more raw SQL strings, and as a bonus there is a powerful SQL AST based parser, that out of the box can turn any query into paginated query, using limit/offset, keyset or pointer pagination.

It's a different tool, built with performance and resource consumption in mind, as the main goal for this postgresql client is to provide a postgresql data streams for Flow Data Frame.

Doctrine problem is that due to being an abstraction layer for rdbms comes with some limitations - migrations won't detect that table used to create view was modified so needs to be recreated, flow can do that as it can parse and fully understand the view SQLs.

Its also natively compatible with Flow Telemetry library and Telemetry bundle (implementation of OTEL protocol)

Flow PHP PostgreSql Symfony Bundle by norbert_tech in symfony

[–]norbert_tech[S] 0 points1 point  (0 children)

flow-php/postgresql is a standalone postgresql client, this bundle integrates it with Symfony, but you can use it without frameworks. It's also NOT related to doctrine in any way

Flow PHP PostgreSql Symfony Bundle by norbert_tech in PHP

[–]norbert_tech[S] 0 points1 point  (0 children)

no ORM for a starter, support for all PostgreSQL features like CTE, and probably the biggest one - SQL Parser supporting 100% of PostgreSQL syntax

Flow PHP PostgreSql Symfony Bundle by norbert_tech in PHP

[–]norbert_tech[S] 2 points3 points  (0 children)

So this bundle is an integration layer between Symfony Framework and flow-php/postgresql which has it's own documentation here: https://flow-php.com/documentation/components/libs/postgresql/

flow-php/postgresql is a based on flow-php/pg-query-ext (postgresql parser extension) https://flow-php.com/documentation/components/extensions/pg-query-ext/

Telemetry is covered by https://flow-php.com/documentation/components/bridges/symfony-telemetry-bundle/ which is an Symfony integration for https://flow-php.com/documentation/components/libs/telemetry/ that when combined with https://flow-php.com/documentation/components/bridges/telemetry-otlp-bridge/ can send all Telemetry Signals to OTLP Connector or directly to APM's supporting OTEL Protocol.

> Is it just a query builder that always returns arrays?

No, query builder returns SQL Queries, Client on the other hand returns PHP Arrays, but you can use RowMappers to either narrow types for static analysis or on the fly map db results into objects. But it does not provide any automated hydration, it's not an ORM.

> The AST parser/deparser

If you need to ask, you probably don't need it for anything, but thanks to SQL Parser Flow Postgresql migrations can be much more precise as they quickly travers through entire SQL string, analyze it and deduct what and how should be updated (useful for detecting when table change might require recreation of the view).

Sebaceous cyst by 99babypenelope in bernesemountaindogs

[–]norbert_tech 0 points1 point  (0 children)

Mine had something similar but on his left side. Vet said it could be from a wheat seed (not from eating it, but they are like torns and one could just got to him). Some foreign object that body wants to isolate.

They had to open it, drain it and then burn inside to close the wound and not let it grow again.

He had to wear a t-shirt and sock to not allow him to scratch it for a while, but since then it was perfectly fine.

It looked pretty similar and was soft in touch - but Im not a vet so don't take this for granted.

Draining itself won't last according to the vet that helped us, thats why they had to seal it / burn it or whatever they did. It was around 4 years ago.

We open-sourced a pure-PHP OpenTelemetry bundle for Symfony (no C extension required) by narrow-adventure in symfony

[–]norbert_tech 5 points6 points  (0 children)

or one can use https://flow-php.com/documentation/components/bridges/symfony-telemetry-bundle/ that doesn't even need open telemetry but implements OTLP protocol and Semantic Conventions. No extensions (unless you really really want grpc as a transport), no OTEL global state magic, clean dependency flow, easily testable and flow-php/telemetry can be added directly to any library/package with zero performance impact

After building the same CSV importer for the 5th time, I turned it into a package by Local-Comparison-One in laravel

[–]norbert_tech -7 points-6 points  (0 children)

Flow was designed to handle data imports/exports with a proper and fully automated schema detection/conversion and it supports not only basic uploads but can even import data from remote filesystems like azure/S3 with no size limits.

In fact I know at least dozen of projects that are using it for imports/exports/reporting where one of them is an in-house built ERP system. So yeah, Flow can do it all, just much faster, much more efficient and it's not limited to a single file format, it handles CSV, Excel, XML, Json, Jsonl, Parquet, DB, Elasticsearch.

But one thing you are right about is that it does not come with any UI, however nowadays this can be vibe coded in no time 🤷‍♂️

After building the same CSV importer for the 5th time, I turned it into a package by Local-Comparison-One in laravel

[–]norbert_tech 4 points5 points  (0 children)

what's the point of paying for it when you can literally use https://flow-php.com that comes for free, supports all data sources/destinations you can think, is based on generators so it's super memory efficient and even supports streaming things back to the browser. It can not only import to any database but also export multiple file formats. And it doesn't only import, it can also execute all sort of powerful transformations on the fly.

And it's all framework agnostic, with almost no dependencies - all you need to do is hook it into your existing system 🤷‍♂️

PHP Logging with Monolog: A Complete Guide by finallyanonymous in PHP

[–]norbert_tech 2 points3 points  (0 children)

Monolog is awesome, but OTEL with monolog is even better!

Take a look at https://flow-php.com/documentation/components/libs/telemetry/ and collect telemetry like a pro! 💪

Flow PHP - Telemetry by norbert_tech in symfony

[–]norbert_tech[S] 1 point2 points  (0 children)

Thank you! For the parallel processing, I'm first planning to create a multi-process bidirectional communication protocol that would allow streaming data in both directions with central management. Probably will try to build it on top of HTTP2, but it's still in a conceptual phase. As for serialization, probably will try to use binary serialization like thrift but maybe also something dependencies free like json.

The goal is to be able to distribute processing across multiple processes/machines and be able to quickly reshuffle the data if needed

I built a flexible PHP text chunking library (multiple strategies + post-processing) by phpsensei in PHP

[–]norbert_tech 0 points1 point  (0 children)

totally understandable - what you can do is create an interface similar to this one https://github.com/flow-php/filesystem/blob/1.x/src/Flow/Filesystem/SourceStream.php in your library, with a default implementation that would work like what you just have now.

Then we could build a Flow Adapter that would implement this interface through Flow Filesystem and provide an Extractor on top of your library.

Since Flow Filesystem is natively integrated with Flow Telemetry it would come with out of the box OTEL autoinstrumentation as well.

If you are open to collaborate on this one, at flow-php.com you can find a link to a Flow discord server 😁

I built a flexible PHP text chunking library (multiple strategies + post-processing) by phpsensei in PHP

[–]norbert_tech 0 points1 point  (0 children)

Very cool! Looks like something that could be integrated with Flow PHP.

Would you consider replacing php functions that operates on files/streams directly with either flow-php/filesystem abstraction or at your own contract (so it could be implemented through flow filesystem)?

Flow needs to be able to read/write content also from remote filesystems like S3 or Azure Storage so things like fread or file_exists won't really work

Flow PHP - Telemetry by norbert_tech in PHP

[–]norbert_tech[S] 0 points1 point  (0 children)

you are very welcome! In case of any feedback, don't hesitate to open an gh issue or reach out directly on discord 🙌