Тёмный
No video :(

My Problem With Dataverse 

Paul O'Flaherty
Подписаться 3,5 тыс.
Просмотров 3,7 тыс.
50% 1

There is a lot of Buzz about Dataverse but I feel like the person pointing out that the Emperor has no clothes on! Have I got it wrong? Have I missed something?
I'm putting this video out into the world to see if others agree with me, or if they can put me right and show me that Dataverse is great after all.
TL;DW - A database that enforces/encourages bad practice (by lack of support/compliance for good Data Modelling and Normalization standards) is a danger to your company's data.

Опубликовано:

 

27 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 23   
@notonurnelly
@notonurnelly 3 года назад
Great Video Paul, just starting to use Dataverse and I'm running into all of these problems. I feel I need to come up with a pro's and con's sheet ahead of our PA developers migrating from SP lists.
@joellindstrom
@joellindstrom Год назад
The account and contact addresses are actually stored in the address table. if you look in the address table you will see the addresses for the customer. It's a convenience to show the first two addresses on a table form. there is an address sequence field in address, and the first two addresses show up on the account or contact record.
@David-no7zi
@David-no7zi 7 месяцев назад
That is shocking that you can only do a join across two records. And the lack of SQL querying/updating is going to make the support of systems built in this an absolute nightmare if the data model is in any way complex (and frankly even if it isn't that complex).
@RemyDuijkeren
@RemyDuijkeren 3 года назад
Hi Paul, I know your feelings; these are the same when I entered the Dataverse world a long time ago. Dataverse is originated from model-driven apps. Learning about model-driven apps & Dynamics 365 apps will give you much more info why things are like this. In model-driven apps you will be given much more out-of-the box functionality then canvas apps, which will out-ways the negative points you mentioned. You need to do some of the work that normally a RDBMS does, which sucks, but it will grow on you. Account has two addresses (and Contact even has three), which are being keept in sync with the Address entity. Thats why you see all those address fields because they are the same as in the Address entity. In the Address entity you can add more addresses, if really need to. This solution is because historically in model-driven apps, editing related records was not that user friendly (it's improved now-a-days). Most organization agree which type of address is stored in Address 1 and which in Address 2. For example, Delivery address is always Address 1 and Post Address is Address 2. This makes searching easier. If you want to search in both addresses, you can also search the Address entity. Looking at all the phone numbers point: The Address entity has three phone numbers, which are specific for that address. Those Address phone numbers also exist on Account, to keep al the address fields the same. Often these are not used, but for companies in logistics, they can be handy. Views are different from Database Views! Microsoft should rename these to Lists or List Views, because they are connected to the entity and are primarily used for viewing in Lists. I agree that it is annoying you can only query one step further. I highly requested feature by Dynamics 365 consultants. Multi-valued fields are added recent because consultants really needed a solution for this much requested feature. Too bad that Microsoft created a not so great solution (not proper database-design, Power BI problems, etc.), and the general advice is to only use them when you have no other option. Dataverse indeed hides the many-2-many relationship implementation. I can understand your worries about this, but I have to say that this feature is one I think is a desirable choice by Dataverse. I practice you almost don't need to query this table. In contrast I have seen enough developers struggle with this in custom apps connecting to a RDBMS. Many-2-many relationship is a hard concept to grasp for a lot of people. If you really want to, you can still create your own many-2-many entity. Dataverse is indeed creating multiple columns, for like the Customer datatype, which can connect to Account or a Contact. This used to be explicitly (you can still do this), but connection to Account or Contact is used so much in Dynamics 365, that they made it implicit. I agree that experts should do data modeling if it concerns important business data. But sometimes data starts as a small side project by one person or a department: in this stage correct data modeling is not the most important thing. When it evolves it should be taken over by IT and be proper modeled.
@pauloflaherty6757
@pauloflaherty6757 3 года назад
Thanks very much Remy! Both for sitting through my long rant and taking the time to give a detailed explanation of why Dataverse operates as it does. Through your responses and others, I think I'm getting a better understanding of why D365/Dataverse operates as it does, this appears to be tailored to specific business scenarios which I guess makes it quicker/easier for those specific cases but limits its usefulness as a general RDBMS, which I guess it was never *designed* to be, although it is now being '*sold*' as such (at least to Canvas App Developers). Interesting to hear that the Address entity is kept in sync with the Address fields in the the Account and Contact tables - do you know the timing on the Sync or the degree of reliability? When we used the 'SQL Mirror' of the D365 data on one project we found discrepancies - though that was a year or two ago, so I'm not now in a position to recheck those specific examples, and possibly they were just duplicate addresses rather than synced entries. If I create a new Dataverse database (outside of D365) is this syncing address behaviour available out-of-the-box? Or is the sync a D365 feature? I've seen more problems with many-2-many relationships recently - assigning Users to Accounts (client needed the facility to assign Accounts to multiple users, not just a relationship owner). We were unable to query that table from a Canvas App so it had to be recreated as a 'real' table and all the data manually transferred. As you say, helpful for Model App development but not good for Canvas Apps (or Flows I believe). In this case, for each Account assigned to a User in the table, we need to pull the Contacts and some other related data for the Account - because we cannot query multiple levels of the hierarchy we are having to iterate over each Account (using a ForAll in the Canvas App) to pull the related data which is unacceptably slow - do you know of a better way of achieving this? I'm somewhat pedantic when it comes to data-modelling - the trouble with side projects that are not properly modelled is that they become difficult to integrate into a wider data model later and, by the time a data-modelling expert takes a look, a lot of valuable data may be effectively lost because it was not collected/stored properly, plus fixes to the data model are going to require changes to any related Apps that have already been developed. I think this is where IT departments need to make themselves more open/available to the business so they can help/advise at earlier stages of side projects, rather than just grumbling about picking up the pieces later on. I came from custom development on SQL and started getting into Canvas Power Apps as a means of easily distributing front-end Apps. As the Power Platform team have pushed D365/Dataverse integration (and discouraged SQL through licensing and a lack of focus on improvements) I need to decide whether to carry on down the D365/Dataverse path or to go back to SQL based development and look for other front-end options. Given my background I am leaning more towards dropping Power Apps (in favour of Blazor or similar) than getting deeper into Dataverse but it is really interesting to try to understand the pros/cons of Dataverse and its evolution.
@stuartduncan2772
@stuartduncan2772 Год назад
Glad to see this. I learned data modelling back in the early nineties and I've always put that knowledge into any database I've created. It ensures that your data is right and also provides the flexibility at the database design level to achieve anything you want to. I'm brand new to Davaverse and I still have loads of unanswered questions. My thoughts are that Microsoft has produced this interface in order to reduce a lot of the work involved when building the data model e.g. lookup table in many to many relationships. My employer is one of the largest broadband providers in the UK and they are encouraging everyone to develop their own apps for local use at a department level. We've historically used Sharepoint lists and, for most applications, they are OK but with the Power platform being encouraged, I can see Dataverse becoming used more and more, particularly with it being available to anyone with a Teams account. For most of these "little" apps with only a few tables, the data-modelling problems may not be too problematic. For very large development projects however, Iit is vital to get it right from the start In the example you gave where an account table that is related to a line items table, wouldn't the account primary key be a foreign key in the line items table so it would be part of the child record? Perhaps I've misunderstood what you were saying. I look forward to any future videos you post in relation to Dataverse.
@stephenclark8772
@stephenclark8772 3 года назад
E.F. Codd and Bill Inmon are likely smiling on you - thank you for the pragmatic sense and risk assessments. May Microsoft product roadmap and architecture executives be listening.
@danielkerridge
@danielkerridge 3 года назад
Hi Paul, I believe you can see all the related fields in the related tab - next to 'invoice details' - I think that gives you a list of all the lookups available.
@pauloflaherty6757
@pauloflaherty6757 3 года назад
Thanks Daniel, the issue is that (in the example given) InvoiceDetail is not *directly* related to Account (it is related through InvoiceHeader) so you cannot (as far as I can see) filter on fields from Account and on fields from InvoiceDetail - hence the need to add 'redundant relationships' which seems to be very common in Dataverse and breaks normalisation resulting almost inevitable in inconsistent data.
@ManvinderSinghSaini
@ManvinderSinghSaini 3 года назад
Paul, "they" will not listen.
@graymattergames2126
@graymattergames2126 Год назад
Paul, thank you for taking the time to share your thoughts. I've be doing extensive research on a tool that will fill the needs for our small company to replace a MS Access database and numerous Excel spreadsheets containing data and reports that have been created as our company has been growing. Immediately after watching your video, it had me second guessing my choice on Dataverse. Thanks for scaring the hell out of me that I chose the wrong product for my company! ;). I continued to do much more research. There are not a whole lot of people on RU-vid that deeply understand the Dataverse product, not to mention the other Microsoft tools, that cannot be overlooked. We cannot take just one product in isolation in the current state of software and data management. Smaller, more nimble programs are being created to handle data online. (In the cloud for the new terminology). On that note, have you looked into Microsoft's Power Bi and the depth of querying and visualizations of this tool. It is also intended to be a presentation tool that is meant to be put into apps, like Dataverse, as dashboards, etc., for the specific situations that you are stating limits Dataverse. I believe Dataverse fully supports data normalization. I agree some of the standard tables are not set up to most effectively control this, but setting up your own tables with one-to-many relationships, as well as creating your own tables for many-to-many relationships is the correct way to go. I also agree that it looks as if you cannot easily access the self created many-to-many tables that are created behind the scenes when using lookups that cause a many-to-many relationship directly; hence the reason you create the many-to-many tables yourself and stick to only using the one to many fields in all other tables, views and forms. Honestly, why would people be looking up which products they've sold in a particular city, using a "data input system"? That is a data reporting system, such as Power Bi, which uses Power Query to dive deep into the relationship paths. You may be thinking, which is understandable, that "views" should be the same as queries in database products, but they are not. (Future improvement? Maybe some, but I doubt it, as I will state in business decisions below) Please keep in mind, this is not what we OG programmers are used to with a database....but Dataverse is not a database as we've always known it, with powerful querying features, like SQL and most other databases. Microsoft makes a lot of effort to not present it as a database. My opinion is that Dataverse is a very nice data input system and is easy to create and use, with very little coding knowledge required. It is a database from the view that it does, in fact, securely store your data and can definitely ensure data normalization, but it just doesn't have the powerful querying options we are used to in a database. Why did Microsoft leave the powerful querying tool out of Dataverse, that is usually in a database, as we've always known it? I believe for two reasons. One-a business model to sell additional querying and reporting tools seperately. Two- to be able to have a team dedicated to advancing a tool, like Power Bi, to handle all kinds of data sources and put the focus on it's ability to do some, ever improving, data manipulation and visualizations, without bloating the actual data input side of the business processes. Good business, genius, or evil genius, you decide. :) Thanks again for scaring me, but I have worked through that and am confident Dataverse, and the suite of Microsoft products, is the way to go for our small company as we continue to grow for a long time. Hope this helps!
@pauloflaherty6757
@pauloflaherty6757 Год назад
Thanks for response. I have been involved in a few projects that use Power Bi and it seems like a good product for interactive dashboards - though I think less well suited to paginated reports for which you might want to look elsewhere. Power Bi is capable of pulling in data from various sources into its own data model - so if some of your data is still in Excel you should still be able to pull that into Power Bi and mix it with Dataverse or whatever. Of course, licensing is complex and can be expensive, so good to talk to someone who understands that side of things and explain your requirements so they can advise you of the likely costs. I suspect the reasons for the data manipulation limitations of Dataverse are twofold - first, it is not new, it is built on Dynamics (and its predecessors) and as far as I am aware was not designed to support the features of a traditional relational database. Secondly it is a software-as-a-service offering. The greater the querying capabilities it has, and the more people use them, the more processing, disk io, etc. it is going to use, and the more capacity MS need to provide in their servers to ensure users get an acceptable experience. Great that Dataverse is a good match for your requirements; my experience building apps against Dataverse has been that there is much work required to overcome the querying limitations which has resulted in unnecessarily complex designs and technical debt making maintenance more difficult, but all projects have different requirements and perhaps I have just been unlucky that those I have worked on push past the boundaries of Dataverse.
@moyura2
@moyura2 2 года назад
Thanks Paul, I would love to see you make a video about the Normalization, if you haven't made one.
@josericardo3015
@josericardo3015 3 года назад
Tks for the video Paul! Would you reccomend build Canvas App against SQL Data Base in order to avoid the problems in Dataverse related by you? If yes, it would be nice to us having you making a video giving some instructions
@pauloflaherty6757
@pauloflaherty6757 3 года назад
Hi Jose. Yes, I would always recommend working against SQL where possible - your data is important and you should not compromise it due to poor selection of tools. The issue is that MS changed the licensing at the end of 2019, so if you want to connect your Power Apps (paid for as part of MS O365) to SQL (paid for as part of MS Azure SQL) you have to pay *again* (for premium connections)... and it is not cheap - $10US per user per app per month. Since that change I have not seen a single new project green lit which involves Power Apps + SQL. For that sort of money you may as well pay a little more up front to develop in another tool than end up paying more over the lifetime of the App due to licensing costs (plus higher support costs for Power Apps due to issues around robustness and maintainability which I'll make a video on shortly).
@callfusion2012
@callfusion2012 2 года назад
Good video Paul and a very important topic! So what you're saying is that it's very difficult to enforce Referential integrity. True? We're a year down the road now. Did you do any research on this later. I was planning on starting with dataverse.... but... So that's not such a good plan. But then what is an affordable data model for power apps? surely deploying Sharepoint or Excel is not a good plan.
@SloMoShort
@SloMoShort 3 года назад
Export the data to ADLSGen2 or SQL Server and query the data there?
@pauloflaherty6757
@pauloflaherty6757 3 года назад
I have used a sql 'mirror' of the D365 data before to improve querying capability and performance, but that incurs the premium licence fee of $10 per user per app per month. A bit of a kick in the teeth when you are already paying for D365 and then have to pay extra to overcome the limitations.
@rajkumaraili2655
@rajkumaraili2655 2 года назад
make sense.. that Dataverse is not support normalization..
@AudrieGordon
@AudrieGordon 2 года назад
Hi Paul! It's been a year since this video and I would love to connect with you to see if there has been any evolution of these thoughts, and/or if we can chat and document feedback. Please reach out to me on LinkedIn if possible. Thank you again for your transparency.
@michelelomonaco5118
@michelelomonaco5118 Год назад
Hi Audrey, After watching Reza Dorrani's tutorial : Introduction to Microsoft Dataverse in Power Apps ( ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-byUuEoDQjiU.html ) as a beginner I was thrilled with how much I learned, but after saw Paul's video I was very disappointed. Who is right in your opinion? Have there been any improvements in DATAVERSE after a year? Thank you. Michele.
@AudrieGordon
@AudrieGordon Год назад
@@michelelomonaco5118 Many investments in ease of use as well as auto scale are being made to extend the Power of Dataverse. Reza is on my team and is a solution architect able to optimize it's use. I have spoken to Paul as well, and am happy to discuss with you too! Hit me up on LinkedIn!
Далее
PowerApps   When NOT to use PowerApps
48:30
Просмотров 21 тыс.
Why SharePoint Experts are using Dataverse
15:09
Просмотров 3,2 тыс.
СЕРЕГА ПИРАТ - TEAM SPIRIT
02:37
Просмотров 302 тыс.
НЕ ИГРАЙ В ЭТУ ИГРУ! 😂 #Shorts
00:28
Avaz Oxun - 10 yillik yubiley konsert dasturi 2023
2:52:33
What is ETL | What is Data Warehouse | OLTP vs OLAP
8:07
Which Database Model to Choose?
24:38
Просмотров 51 тыс.
What is Apache Iceberg?
12:54
Просмотров 22 тыс.
Normalization - 1NF, 2NF, 3NF and 4NF
19:02
Просмотров 2,2 млн