Thoughts/Impressions of Valentina

Go to the item in the store and on the license selector, select RENEW. The price automatically updates above so you can see what you are paying.

And this is for everyone who is past their renewal time, not just Karen :slight_smile:

Sending an email when the renewal is due is something that I have mentioned before. This would really help. This year I noticed only when testing that I needed to renew.

My main problems with the documentation are that there isn’t enough of it. And I still can’t read the russian english without the filler words.

[quote=253022:@Ruslan Zasukhin]Phillip and other Valentina (DB/Reports/Studio/Servers) users,

Do you know what wonder me most of all in this article and few comments?
I wonder why you do not talk with us? :slight_smile:

Phillip, you mention that you use in this or that way Valentina Studio and even Valentina Server for your clients. I bet I did not see any question from you on our Valentina Forum.

We answer here on each question. We try to do this asap. Usually in few hours. This is free option so why not use it?

[/quote]

My intention was not to ask your team questions or create controversy. I just wanted to share my thoughts on Valentina Studio and why I have not had a chance to use Valentina the database yet.

Sure there are features that would be awesome as well as things I would improve. I am not engaged or committed to Valentina enough to participate in your bug tracker or forums. I apologize if that sounds rude but we have many choices with databases. If its not immediately obvious to me how it will help my projects or make me more productive how am I supposed to sell it to my customers? My article is simply my thoughts/impressions - not even a legitimate review.

[quote=253061:@Lynn Fredricks]Here’s a conundrum regarding documentation (and for the site, for that matter), and we’d appreciate your feedback on it.

Since many of Paradigma products are targeted at vertical development tool markets (Xojo, Java, C#, etc), but work around the same base feature set, what would be the best way to help people drill down to what they want?

Many tools available for Xojo are Xojo only. You go to their sites, and, everything there is for Xojo. There are some exceptions, I know. In our case, we support many platforms.

A simple landing page by platform might solve overhead / presentation for sales and marketing purposes, but in regards to documentation it gets a bit more complicated than that.[/quote]

That is a conundrum but one you have opted for as a business. It’s not really our problem that the documentation is challenging to compose for several different languages.

In my post I give Microsoft’s documentation as an example of one way to address:

“The documentation also varies quite a bit between runtime platforms. The languages seem to all support the same general level of functionality but its not made obvious how a single objective could be completed in any one language, or side by side. They could learn from Microsoft in this department in how they handle multiple .NET languages.”

For example check out https://msdn.microsoft.com/en-us/library/system.net.webrequest(v=vs.110).aspx

On that single page documenting a single class/object I can switch between framework versions, and programming languages. From the Xojo development perspective its not unreasonable to assume I won’t understand the Python or C++ equivalent when looking at the examples. However the Xojo code should literally be copy/paste’able and just work and be immediately obvious to me.

I will review Ruslan’s links above to samples using the API vs SQL nomenclature which is something I am very interested in. I’d prefer to avoid ActiveRecord or equivalent and speak to the database more natively without the SQL abstractions when possible. However I am not confident how that works from just glancing at the documentation page. I appreciate that Paradigma and especially Ruslan is so helpful and quick to point to information.

None of my criticisms are negative in nature - simply feedback to see you improve. Like I said in my article the Studio product is fantastic and I assume the database is as well. I just need more ammunition to feel confident using it for my next project.

I agree with the Phillip’s review of Valentina. I love it also.

I tried VDB around a year ago because I was intrigued with some of the advanced features of Valentina, namely the binary linking and API style of coding. With the exception of a few legacy customers and/or those with very long distance networks, I have completely switched to API coding. I also use Binary Links exclusively. (And of course all the other advanced features)

Once you wrap your head around it, it’s very easy and straight forward.

I also agree with a few others concerning the docs/wiki. They are not the easiest to use. I take into consideration that the guys at Valentina are Russian, so English is not their first language. I do my best to decipher what they write. Sometimes I get it - sometimes I don’t. I would like to see a beginners area and maybe products broken down by platform.

And in Valentina’s defense, maintaining an extensive doc/wiki is not remotely easy. I have one for a client and it has to be written in Dutch. Ik heb genoeg moeite met spreken Engels!

But, I will say - the developers are VERY quick to respond to requests for help. They do try hard to solve your issue.

I understand Phillip’s dislike of constant updates. On the flip side though, if a bug or issue is found, I like the fact they fix it and push out an update right away versus waiting for the next minor release.

With everything, improvements can always be made.

I am a Valentina fan boy and I have enough confidence in their product(s) to recommend it Philip. I was hesitant at first, and I got my feet wet by rewriting/updating our in-house applications/DBs using Valentina. I was very impressed. Now, we use it exclusively.

API code: I swear by it. It has made my coding life much easier and more efficient. I banged my head on the keyboard many a day trying to figure to out and I will not begin to say it was easy, but once I had a relatively good grasp of it - I loved it.

I suggest giving VReports a whirl too. It’s a traditional banded reporting system but it’s pretty powerful. I let my Crystal Report subscription lapse because Valentina gave me what I needed for 1/10th the cost.

Scott thanks for the feedback. I had not even heard of the binary link mechanisms. I just read about it here: http://valentina-db.com/docs/dokuwiki/v6/doku.php?id=valentina:vcomponents:vkernel:vlink:binarylink_advantages

That page is awesome and immediately demonstrates the benefits. Finding that page was odd. Searching for ‘valentina binary link’ takes me to some forum discussion. I had to dig into the vkernel documentation to find it. I had no idea to look for this until you mentioned it.

The documentation content is generally okay but discoverability is terrible. I don’t know how to fix this problem. I do know the more I read the docs the more I start to like the database and its design and want to use it.

I am with you on the Docs.

For shiz and giggles: this is why I switched.

Dim InsertedID as Integer
InsertedID = myAwesomeTable.AddRecord()

That’s it. There’s your insert. No more: “INSERT INTO myAwesomeTable (field1, field2, etc) VALUES (‘value1’,‘value2’, etc) …”

Now link them.

The InsertedID is the actual RecID of the insert (same for every other child table insert)

dim Recs(1) as Integer (zero based array)
Recs(0) = parent InsertedID
Recs(1) = child InsertedID (and so forth)

binarylink.LinkRecords(Recs) <— that’s it. All the records are now linked.

Need to find the linked records?

myAwesomeArraySet = Link.FindAllLinked( TblA, TblB )

Your binary links are constructed using the RecIDs of all your records behind the scenes and impart no overhead on the DB. As long as you know one RecID, you can find all linked records in one fell swoop.

This is a really basic overview. Although there is more to it than this, it pretty much is this simple in concept.

It sold me.

Thank you for this share. We have push this to our FaceBook page yesterday.

[quote=253105:@Phillip Zedalis]Sure there are features that would be awesome as well as things I would improve. I am not engaged or committed to Valentina enough to participate in your bug tracker or forums. I apologize if that sounds rude but we have many choices with databases. If its not immediately obvious to me how it will help my projects or make me more productive how am I supposed to sell it to my customers? My article is simply my thoughts/impressions - not even a legitimate review.
[/quote]

It seems you mean here Valentina DB … but I did mean Valentina Studio, which you use daily.

You have mention something annoys you. It is a good idea report this into our bug tracker. We will try improve asap.

[quote=253120:@Phillip Zedalis]Scott thanks for the feedback. I had not even heard of the binary link mechanisms. I just read about it here: Binary Link Advantages [Valentina Database Wiki v10]

That page is awesome and immediately demonstrates the benefits. Finding that page was odd. Searching for ‘valentina binary link’ takes me to some forum discussion. I had to dig into the vkernel documentation to find it. I had no idea to look for this until you mentioned it.

The documentation content is generally okay but discoverability is terrible. I don’t know how to fix this problem. I do know the more I read the docs the more I start to like the database and its design and want to use it.[/quote]

Just to provide HELP for readers of this thread… Let me show this:

  1. I have again go to Valentina WIKI first page.

And the first text on this page is:

GETTING STARTED
GETTING STARTED – Find here directions how to learn Valentina products, docs, …

So I click it

  1. and here some FAQs … the second section is

Working with Documentation

  • Where to find links on Valentina docs?
  • In what order to read documentation?
    Please read this page: Way to Learn Valentina Docs
  1. I click Way to Learn Valentina Docs and come to page which give advices how to work with Valentina Docs.

Here only text is copy-pasted. In the WIKI present a lots of direct links to easy jump.

I’ll chime in with my thoughts in Valentina Studio. My commercial apps use MSSQL Server, but I (strongly prefer to) develop on Mac.

I got Studio v5 with the Omega Bundle, and was very disappointed with MSSQL support. My hopes jumped with v6, but early versions were rife with little bugs and inconsistencies that rendered it unusable. Paradigma worked with me on some specific issues, and were releasing general updates at a frantic pace for some time.

Their hard work certainly paid off. Studio 6.3.5 is very stable, and I use it to manage and develop for MSSQL, MySQL, and other DBs on an almost daily basis.

I renewed my subscription to Studio.

[quote=253134:@Ruslan Zasukhin]Just to provide HELP for readers of this thread… Let me show this:

  1. I have again go to Valentina WIKI first page.

[/quote]

None of us question whether the documentation exists. It’s the structure of how its presented that just doesn’t work. I will give you an example:

When I end up on: http://www.valentina-db.com/docs/dokuwiki/v6/doku.php?id=valentina:products:adk:examples:guide:api_style:api_style#database_clone_example

“This section contains examples that demonstrate how to control Valentina database using Valentina API commands. Many examples in this section have satellite - example in the section SQL Examples.”

Okay cool.

Database_Clone example
Demonstrates how you can clone existed database.”

Where is this example? There is nothing clickable. On the right hand side there is a list of all of these examples that when you click it takes you to a header like the one above. No link to the actual example files, no example code, nothing. Perhaps its installed with Valentina DB in an examples folder.

Here is a screenshot: http://imgur.com/MQgClUp

I think if you presented the documentation, example projects, code samples, etc in a different way it would be more accessible. I know the content is there I just can’t discover it in the way I would expect.

it may be less up to date , but when I studied Valentina , I liked the PDF:

Valentina DB Kernel

Valentina DB Language

I have enjoyed working with this database. It is beautifully integrated with Xojo through its class system (and since more than 15 years I think!). We find pleasure in using a database.

[quote=253151:@Phillip Zedalis]When I did finally get a project well suited for Valentina Server they announce they are offering SQLite as a server in addition to Valentina. More importantly the connection counts for SQLite are higher than for Valentina at the same price point.

This clearly feels like to me that they are saying SQLite is an inferior technology and thus costs less. However no distinction or evidence of this is demonstrated anywhere in the IDE or documentation. In fact it makes no mention at all anywhere why you might choose one or the other.[/quote]

I had done some benchmarks two or three years ago, and at least Valentina was three to four times faster than SQLITE, and sometimes much more. But even with a three factor, the difference is huge.

But the main difference in performance is not here. SQLITE blocks the entire database for a writing transaction (Even a SQLITE server As cubeSQL or Valentina SQLITE server). Valentina DB will only block the records/lines concerned. Again, the difference is huge. The possible number of simultaneous users is multiplied by xxx. Accordingly, the speed of transactions is also much faster, since the database rarely expects an unlocking.

5 connections for Valentina DB server” can actually handle many more concurrent users/connections than " 10 connections for SQLITE server" .

And for the difference with MySQL or PostgreSQL, for me the advantage of Valentina is to propose further integration, a more pleasant and elegant use. Above all, we work directly with the developers of the database (!), with a real support, real human contact. They react very quickly, they still have the same enthusiasm for 15 years. I believe that Xojo developers like small communities, with a real contact. Also, for large projects, like valentina is much faster, there will be less need to use gas plants, such as database replication, etc. Error handling is also much easier with Valentina.

Regarding the disadvantages, it is of course a small business. And if you work with classes and direct API is more difficult to migrate to other databases or integrate a new developer in the team. But frankly , it’s a beautiful product that has a real added value. It is worth this risk.

I think it would be a very good thing for Xojo Inc/Paradigma that a Xojo specialist take in hand the distribution of Valentina DB for Xojo community. With a dedicated web site for Xojo , doc, etc. If Xojo included Valentina DB server, Valentina Studio, and Valentina Reports, it would be more attractive for professionals. It would be a beautiful pack. It would be close to the ease of use and speed of development of solutions as 4D.

[quote=252921:@Ruslan Zasukhin]Hi Russ,

I have go to Valentina wiki, and was need only 2 clicks to come to page which answers your question about Report Parameters.

Let me show.

Jump to main page of Valentina WIKI. http://www.valentina-db.com/docs/dokuwiki/v6/
On the left tree find Valentina Reports and click it.
you will come to page “Valentina Reports” where you can easy find Valentina Reports Parameters. Click it.
And you know already that we are fast enough on our Valentina forum with help.[/quote]

HI,

I wasn’t making a report, i was trying to design a query. I thought i would be able to add a parameter to it. it seems this is not possible?

I know that sometimes i work in odd ways! my idea was this

  1. Design Query that has parameters for where clause
  2. Design Report that uses the Query.

Maybe this is not the way it works?

Olivier I appreciate your real world example of why you choose Valentina. I think you make some excellent points about how they could work with Xojo a bit more to provide a better on boarding experience.

[quote=253177:@olivier vidal]I had done some benchmarks two or three years ago, and at least Valentina was three to four times faster than SQLITE, and sometimes much more. But even with a three factor, the difference is huge.
[/quote]
My recent experience was exactly the opposite. Despite spending days modifying and optimizing my code to work with the Valentina API mode instead of SQL, using their binary links, etc, Sqlite consistently outperformed Valentina DB by an order of magnitude. I’m not saying this will always be the case. My point is that workloads vary and one database does not fit all workloads. YMMV.

[quote=253177:@olivier vidal]But the main difference in performance is not here. SQLITE blocks the entire database for a writing transaction (Even a SQLITE server As cubeSQL or Valentina SQLITE server). Valentina DB will only block the records/lines concerned.
[/quote]
This statement is not as accurate as it used to be. Starting with version 3.7, Sqlite offers ‘WAL’ mode (Write Ahead Logging). When using this mode for the database, then one writer will block other writers, but writers do not block readers, and readers do not block writers.

[quote=253177:@olivier vidal]Again, the difference is huge. The possible number of simultaneous users is multiplied by xxx. Accordingly, the speed of transactions is also much faster, since the database rarely expects an unlocking.
[/quote]
Sorry, I don’t know what that means?

[quote=253061:@Lynn Fredricks]Here’s a conundrum regarding documentation (and for the site, for that matter), and we’d appreciate your feedback on it.
[/quote]
My suggestion is that you begin by making it available offline in some format other than outdated PDFs. The most recent offline doc for Valentina / Xojo that I can find on the website is a PDF dated 2014 and labeled “Valentina 5 for REALbasic”. Proper documentation is hard, but outdated documentation will not inspire confidence in potential new customers.

Thanks Phillip. On the other hand, I remembered something after:

I believe that the API (NoSQL) is rather adapted to single user apps because I believe that there is no locking system when working this way.

With SQL, each cursor is running in a thread and Lock is fine. Cursor methods are complete and practical.

[quote=253314:@olivier vidal]
I believe that the API (NoSQL) is rather adapted to single user apps because I believe that there is no locking system when working this way.

With SQL, each cursor is running in a thread and Lock is fine. Cursor methods are complete and practical.[/quote]

This reminds me, the final kicker for me regarding Valentina DB is that it does not have any support for transactions, regardless of operating mode, API, or SQL. i.e. no Begin / Commit / Rollback.

[quote=253314:@olivier vidal]Thanks Phillip. On the other hand, I remembered something after:

I believe that the API (NoSQL) is rather adapted to single user apps because I believe that there is no locking system when working this way.

With SQL, each cursor is running in a thread and Lock is fine. Cursor methods are complete and practical.[/quote]

Hmm. That’s disappointing if true. Does the API method only work with local databases? What about when connecting to a Valentina server? The API usage in that scenario would have to lock properly right since its not really being performed on the client, its just communicating my intent to the server?

I would have discovered that after a few hours and be scratching my head for a few more hours trying to find it in the docs. I am not sure how any SQL database can exist without some elementary transaction support?

According to this page they have some transaction support but I don’t know how you use it: http://www.valentina-db.com/docs/dokuwiki/v4/doku.php?id=valentina:vcomponents:vsql:reference:sqlgrammar:4.7&s[]=transaction#transactions

I created a local Valentina database, a ‘Users’ table with two columns: firstName, lastName

I added myself to this database.

In Valentina Studio I ‘Open SQL Editor’ and type ‘BEGIN TRANSACTION’ and hit run just to see what it gives back. It hard crashes every time.