FransBouma / Massive

A small, happy, dynamic MicroORM for .NET that will love you forever.
Other
1.8k stars 322 forks source link

Couple of questions #218

Closed mwpowellhtx closed 9 years ago

mwpowellhtx commented 9 years ago

For starters...

1) how active is this repo? the last update I see was almost a year ago.

2a) has anyone measured the cost penalty for going down the dynamic rabbit hole? dynamic is cool and all, don't get me wrong; it has its uses: i.e. for a COM-server that you may not know the type definitions for, etc. that might be an acceptable tradeoff for runtime binding.

2b) especially I'm thinking in terms of the tradeoff, runtime binding of dynamic for each repository instance every time something happens, versus in NHibernate, or EF, spin up a single SessionFactory, or DbContext, and then farm out Sessions or DbSets, etc?

3) what do we mean by single file databases? one connection string? how to deal with things like sharding, etc?

4) I'm not seeing a notion of an IQueryable interface. Furthermore, I see a lot of hard-coded strings for where clauses. Any support for LINQ? what would that be, exactly? LINQ-to-dynamic? I'm not sure, given the context...

Any insights?

Thank you...

mwpowellhtx commented 9 years ago

One other... is there someplace other than issues in order to spark up a discussion such as this?

mwpowellhtx commented 9 years ago

5) Not much of a presence via Nuget?

6) and of course, 780+ forks? OMG ... not all of which contributing, to be fair, but still... one of which, I think, which at least thought to add support for MySql.

7) Any Sql Server support?

robconery commented 9 years ago

Hi Micheal - I like to keep issues as issues and if you have questions you're welcome to ping me on Twitter or, if you like, send an email. I'm happy to respond here - but for additional questions just click my avatar and you'll see my email.

1) Massive is pretty much "done" although a few things come in from time to time and we'll makes some adjustments. Given that it's open source, you're welcome to contribute.

2) What issues are you referring to RE dynamics? No one has reported any problems so far, and Massive has been around for a bit. Although there was one issue about memory leaks at extreme load (which turns out to be a .NET bug) - but I think that's an edge case.

3) I don't know what you're referring to with single file database. Massive is a single file that you can modify as you like - maybe that's what you mean.

4) No IQueryable, yes we build SQL on the fly. No plan for LINQ in the future.

5) Nuget is a massive pain in the ass and this is a single file, no need.

6) Forks are a good thing. Have you used Github before? People fork mostly to have their own copy with which they can modify as they please. That's the whole idea behind Massive.

7) Massive was built focusing on SQL Server - that's all the main file supports.

mwpowellhtx commented 9 years ago

Memory leaks under load and runtime binding penalties are pretty significant issues. These are no small issue. One might say interesting, but a non-starter. Dynamic binding penalties alone versus spinning up a session factory once would be a tough argument to respond to.

So is linq support versus textual sql. Basically anything that defers discovering issues that require correction early does not necessarily and value. In fact I argue poses more risk than benefit. Contrasted with anything that leads to early discovery is preferable at least in my experience.

@robconery You misspelled my name. Comments intended as constructive criticism.

Hey fair enough re: massive being end of life versus working. No worries.

Thanks for helping me take a hard but enlightening look at it.

To be fair I am drawing on EF and NHibernate as a frame of reference. But which is also part and partial of the whole micro-orm fad.

Thank you kindly for the feedback. Good to know.

mwpowellhtx commented 9 years ago

^^ add value

you catch my meaning...

Thank you again.

robconery commented 9 years ago

As I said, Massive has been in use for years now, powering some pretty intense applications that need speed. One user ramped out millions of instances (by mistake) and found an edge case where .NET wasn't releasing memory properly in the backing dictionary. If an edge case like this - literally one in 10s of thousands is a "non-starter" for you, good luck with EF/NHibernate which have multiple issues like this. This is why I made Massive.

Moreover, it's a single file - so if you don't like anything, change it.

I don't think it's quite fair to state that a problem exists when you have no idea what you're talking about. Dynamic binding penalties are simply loading objects into a backing dictionary. Compare this with EF's object binding and you tell me which is slower.

LINQ support vs. SQL. OK then.

End of life. I think I said it's finished - meaning done, it's there for you to use.

Finally - in terms of "constructive criticism" - nothing of what you said has any substance whatsoever. It wreaks of the entitlement I find so dear to the .NET developers/managers out there.

Please - use something else and don't come back.